Arduino — предопределенные константы

Arduino IDE имеет набор предопределенных констант, которые определяют состояния ввода/вывода и логические значения. Они облегчают написание программ и анализ написанного кода.

Каждая предопределенная константа имеет свой цифровой аналог, и при этом они могут взаимозаменять друг друга. Преимуществом использования констант заключается в их удобочитаемости и уникальности в коде.

Ноль можно определить как значение (число) или состояние вход/выход вывода. Термин «LOW» четко указывает, что это состояние входа/выхода.

Константа true и false

  • true - истина. Аналогом может быть любое число, отличное от нуля.
  • false - ложь. Аналогом может быть ноль.

Константа HIGH и LOW

HIGH и LOW определяют состояния цифровых выводов системы.

  • HIGH – высокое состояние.
  • LOW – низкое состояние.

В случае, когда вывод определен как выход, то при установке HIGH - на выходе мы получим сигнал логической единицы (напряжение близкое к напряжению питания), а при установке LOW – на выходе у нас будет логический ноль (напряжение близкое к нулю).

В случае, когда вывод определен как вход - при чтении входного сигнала, все что выше ~3В (при питании от 5В) будет HIGH, все что ниже LOW.

Константа INPUT, INPUT_PULLUP и OUTPUT

Константы INPUT, INPUT_PULLUP и OUTPUT позволяют настраивать системные выводы в качестве входов или выходов.

  • INPUT устанавливает вывод в качестве входа.
  • OUTPUT устанавливает вывод в качестве выхода.

Перед чтением данных с контакта его необходимо определить в качестве входа. В ситуации, когда к определенному контакту подключена система вывода (например, светодиод), прежде чем устанавливать на нем высокий или низкий уровень, необходимо такой контакт определить как выход.

В основном системные выводы определяются как входы или выходы в функции setup(). В особых случаях определение выполняется в функции loop(). Если определенный вывод постоянно должен быть входом (выходом), то мы определяем его в функции setup().

Иногда бывает так, что один и тот же вывод необходимо попеременно переводить из состояния входа в состояние выхода и наоборот, в этом случае определение вывода происходит (перед чтением/записью данных) в конкретной функции. Примером этому может служить двунаправленная связь с термометром DS1820 по шине 1-Wire.

Особый случай представляет собой константа INPUT_PULLUP. Данная константа позволяет подключить к входу подтягивающий резистор.

Для чего это нужно? Читая данные входа мы получим логический ноль при замыкании контакта на «землю» и логическую единицу при замыкании его с плюсом питания (5В).

Когда контакт не подключен ни к «земле» и ни к источнику питания, возникает переходное состояние, которое чаще всего интерпретируется как логический ноль (но не всегда).

И если вы хотите прочитать состояние кнопки, которая замыкается на «землю» (обычная электронная практика), то может возникнуть проблема интерпретации данных. Так как при не замкнутой кнопке мы имеем переходное состояние - скорее логический ноль.

Поэтому подключение подтягивающего резистора к плюсу питания приводит к тому, что при разомкнутых контактах кнопки на входе будет четкая логическая единица.

Дополнительные сведения об использовании предопределенных констант смотрите в следующих статьях по описанию digitalWrite() и pinMode().

редактор

Добавить комментарий

Ваш электронный адрес не будет опубликован.

*