Константы, характеризующие логические уровни, true или false (Булевы константы)
В языке Ардуино существует две константы, использующиеся для обозначения истинности или ложности: true и false.
false
Наиболее проста в определении константа false. false означает 0 (ноль).
true
Часто считают, что константа true означает 1, что является верным, однако true имеет более широкое значение. Любое целое число, не равное 0, логически является истиной (true). Поэтому числа -1, 2 и -200 в Булевой алгебре будут также считаться истиной (true).
Обратите внимание, что константы true и false пишутся в нижнем регистре, в отличие от констант HIGH, LOW, INPUT и OUTPUT.
Константы, характеризующие уровень напряжения на выводах, HIGH и LOW
При работе с цифровыми выводами существует всего два значения, которые они могут выводить или считывать: HIGH и LOW.
HIGH
Понятие HIGH (применительно к выводу) может несколько отличаться в зависимости от того, как настроен вывод - как вход (INPUT) или как выход (OUTPUT). Если функцией pinMode вывод сконфигурирован как вход (INPUT), то при считывании с него данных (функция digitalRead) микроконтроллер ответит HIGH в том случае, когда на выводе присутствует напряжение 3В или больше.
Также возможна ситуация, когда функцией pinMode вывод сконфигурирован как вход (INPUT), после чего функцией digitalWrite на него подается высокий уровень HIGH. В этом случае к выводу будут подключены внутренние подтягивающие резисторы номиналом 20 кОм, что приведет к возникновению на нем высокого уровня HIGH. При считывании значение HIGH будет удерживаться до тех пор, пока внешними цепями на выводе не будет сформирован низкий уровень LOW. Именно так работает режим INPUT_PULLUP.
Если функцией pinMode вывод сконфигурирован как выход (OUTPUT) и функцией digitalWrite на него подан высокий уровень HIGH, то на выводе установится напряжение 5В. В этом режиме он может быть источником тока и, например, засвечивать светодиод, последовательно подключенный через резистор к земле либо к другому выходу с уровнем LOW.
LOW
Понятие LOW также имеет разные значения в зависимости от того, как настроен вывод - как вход (INPUT) или выход (OUTPUT). Если функцией pinMode вывод сконфигурирован как вход (INPUT), то при считывании с него данных функцией digitalRead микроконтроллер ответит LOW в том случае, когда напряжение на выводе не превышает 2В.
Если функцией pinMode вывод сконфигурирован как выход (OUTPUT) и функцией digitalWrite на него подан низкий уровень LOW, то на выводе установится напряжение 0В. В этом режиме он может принимать втекающий ток, например от светодиода, подключенного через резистор к +5В либо к другому выходу с уровнем HIGH.
Константы, характеризующие цифровые выводы, INPUT, INPUT_PULLUP и OUTPUT
Выводы, сконфигурированные как INPUT
Выводы Ардуино (ATmega), сконфигурированные функцией pinMode() как входы (INPUT), находятся в высокоимпедансном состоянии. Это эквивалентно подключению к выводу последовательного резистора в 100 МОм, поэтому к цепям, подключенным к таким выводам, не предъявляется практически никаких требований. Такой режим удобен для считывания сигналов с датчиков, но не приемлем для питания светодиодов.
Следует отметить, что входы INPUT иногда соединяют с землей через подтягивающий резистор (резистор на землю), как описано в примере использования последовательном связи.
Выводы, сконфигурированные как INPUT_PULLUP
Микроконтроллер ATmega в Ардуино имеет внутренние подтягивающие резисторы (резисторы, подключенные к питанию внутри микросхемы), которыми можно управлять. Если вы предпочитаете использовать их вместо внешних резисторов, подключенных к земле, - используйте параметр INPUT_PULLUP в функции pinMode(). Это позволит инвертировать поведение подключенного к выводу внешнего датчика: HIGH будет означать его отключение, а LOW - включение. См. пример использования INPUT_PULLUP при последовательной связи.
Выводы, сконфигурированные как OUTPUT
Выводы, сконфигурированные функцией pinMode() как выходы (OUTPUT), находятся в низкоимпедансном состоянии. Это означает, что они могут обеспечить внешние цепи относительно большим током. Микроконтроллер ATmega может отдавать (положительный ток) или принимать (отрицательный) ток до 40 мА (миллиампер) от внешних устройств/цепей. Такой режим удобен для питания светодиодов, но бесполезен при считывании сигналов с датчиков. Выводы, сконфигурированные как выход, также могут быть выведены из строя при коротком замыкании на землю либо на цепь питания 5В. Кроме того, выходного тока микроконтроллера ATmega недостаточно для питания большинства реле и двигателей, что требует дополнительных интерфейсных цепей.