Предопределенные константы Arduino
Описание
Константы – это предопределенные выражения в языке 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.