Константы

В языке Ардуино константы - это предопределенные переменные. Они используются для улучшения читабельности программного кода.

Все константы можно условно разделить на несколько групп.

Константы, характеризующие логические уровни, 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 - включение.

Выводы, сконфигурированные как OUTPUT

Выводы, сконфигурированные функцией pinMode() как выходы (OUTPUT), находятся в низкоимпедансном состоянии. Это означает, что они могут обеспечить внешние цепи относительно большим током. Микроконтроллер ATmega может отдавать (положительный ток) или принимать (отрицательный) ток до 40 мА (миллиампер) от внешних устройств/цепей. Такой режим удобен для питания светодиодов, но бесполезен при считывании сигналов с датчиков. Выводы, сконфигурированные как выход, также могут быть выведены из строя при коротком замыкании на землю либо на цепь питания 5В. Кроме того, выходного тока микроконтроллера ATmega недостаточно для питания большинства реле и двигателей, что требует дополнительных интерфейсных цепей.


Смотрите также

Расскажи о нас

Сообщение

Если у Вас есть опыт в работе с Arduino и собственно есть время для творчества, мы приглашаем всех желающих стать авторами статей публикуемых на нашем портале. Это могут быть как уроки, так и рассказы о ваших экспериментах с Arduino. Описание различных датчиков и модулей. Советы и наставления начинающим. Пишите и размещайте свои статьи в соответсвующей ветке форума.

Последние комментарии