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

Добавлено 19 ноября 2018 в 05:47

Описание

Константы – это предопределенные выражения в языке Arduino. Они используются для упрощения читаемости программ. Мы классифицируем константы на группы.

Определение логических уровней: true и false

Для представления истины и лжи на языке существует две константы: true и false.

false

Определить false из этих двух констант легче. false определяется как 0 (ноль)

true

Часто говорят, что true определена как 1, что верно, но true имеет более широкое определение. Любое целое число, отличное от нуля, в булевом смысле является true. Итак, -1, 2 и -200, все они определяются как true, тоже в булевом смысле.

Обратите внимание, что константы true и false набираются в нижнем регистре, в отличие от HIGH, LOW, INPUT и OUTPUT.

Определение уровней на выводах: HIGH и LOW

При чтении или записи на цифровой вывод есть только два возможных значения, которые вывод может принимать, или в которые он может быть установлен: HIGH (высокий) и LOW (низкий).

HIGH

Значение HIGH (по отношению к выводу) несколько различается в зависимости от того, установлен ли вывод на вход (INPUT) или на выход (OUTPUT). Когда вывод настроен на вход с помощью pinMode() и читается с помощью digitalRead(), Arduino (ATmega) будет сообщать HIGH, если:

  • на выводе присутствует напряжение более 3,0 В (для плат 5 В);
  • на выводе присутствует напряжение более 2,0 В (для плат 3,3 В).

Вывод может также быть настроен на вход (INPUT) с помощью pinMode(), а затем установлен в HIGH с помощью digitalWrite(). Это позволит использовать внутренние подтягивающие резисторы 20 кОм, которые будут подтягивать входной вывод до значения высокого уровня HIGH, если он не будет подтягиваться до низкого уровня LOW внешней схемой. Вот так работает INPUT_PULLUP, более детально это описано ниже.

Когда вывод настроен на выход (OUTPUT) с помощью pinMode() и установлен в значение HIGH с помощью digitalWrite(), вывод находится в состоянии:

  • 5 вольт (для плат 5 В);
  • 3,3 вольта (для плат 3,3 В).

В этом состоянии он может быть источником тока, например, зажигать светодиод, который подключен последовательно через резистор на землю.

LOW

Значение LOW также имеет разное значение в зависимости от того, настроен ли вывод на вход (INPUT) или на выход (OUTPUT). Когда вывод настроен на вход (INPUT) с помощью pinMode() и читается с помощью digitalRead(), Arduino (ATmega) будет сообщать LOW, если:

  • на выводе присутствует напряжение менее 1,5 В (для плат 5 В);
  • на выводе присутствует напряжение менее 1,0 В (примерно) (для плат 3,3 В).

Когда вывод настроен на выход (OUTPUT) с помощью pinMode() и установлен в значение LOW с помощью digitalWrite(), вывод находится в состоянии 0 вольт (платы 5 В и 3,3 В). В этом состоянии он може потреблять ток, например, зажигать светодиод, который подключен через последовательный резистор к шине +5 вольт (или 3,3 вольта)

Определение режимов цифровых выводов: INPUT, INPUT_PULLUP и OUTPUT

Цифровые выводы могут использоваться как INPUT (вход), INPUT_PULLUP (подтянутый вход) или OUTPUT (выход). Изменение вывода с помощью pinMode() меняет его электрическое поведение.

Выводы, настроенные как входы (INPUT)

Выводы Arduino (ATmega), настроенные как входы (INPUT) с помощью pinMode(), как говорят, находятся в состоянии высокого импеданса. Выводы, настроенные как входы, предъявляют чрезвычайно малые требования к току в цепи, с которой они считывают данные, и эквивалентны последовательному резистору 100 мегаом перед выводом. Это делает их полезными для считывания показаний датчиков.

Если вы настроили вывод на вход и считываете состояние кнопки, когда кнопка находится в разомкнутом состоянии, входной вывод будет «висеть в воздухе», что приведет к непредсказуемым результатам. Чтобы обеспечить правильное считывание, когда кнопка (ключ) разомкнута, необходимо использовать резистор, подтягивающий вывод либо к шине питания, либо к земле. Назначение этого резистора – подтянуть вывод к известному состоянию, когда ключ разомкнут. Обычно выбирается резистор 10 кОм, так как он является достаточно маленьким, чтобы надежно предотвратить «повисание вывода в воздухе», и в то же время достаточно большим, чтобы не потреблять слишком большой ток, когда ключ замкнут.

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

Если используется резистор, подтягивающий до шины питания, уровень на входном выводе будет высоким (HIGH), когда ключ разомкнут, и низким (LOW), когда ключ замкнут.

Выводы, настроенные как входы с подтягивающим резистором (INPUT_PULLUP)

Микроконтроллер ATmega на Arduino имеет внутренние подтягивающие резисторы (резисторы, которые подключены к шине питания внутри микроконтроллера), к которым у вас есть доступ. Если вы предпочитаете использовать их вместо внешних подтягивающих резисторов, то можете использовать аргумент INPUT_PULLUP в функции pinMode().

Выводы, настроенные как INPUT (входы) или INPUT_PULLUP (входы с подтягивающими резисторами) могут быть повреждены или полностью разрушены, если они подключены к напряжениям с уровнем ниже земли (отрицательным напряжениям) или с положительным уровнем выше уровня шины питания (5 В или 3,3 В).

Выводы, настроенные как выходы (OUTPUT)

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

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

Определение встроненных модулей: LED_BUILTIN

Большинство плат Arduino имеют встроенный светодиод, подключенный последовательно с резистором. Константа LED_BUILTIN – это номер вывода, к которому подключен встроенный светодиод. На большинстве плат это светодиод подключен к выводу 13.

 

Теги

ArduinoGPIOПодтягивающий резисторПрограммированиеЦифровой входЦифровой выход

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.