Constants

Материал из MK90.ORG wiki
Перейти к:навигация, поиск

Константы

Константы - это предопределенные переменные языка Arduino. Основная их задача - упростить понимание текста программы. Константы условно делятся на группы.

Логические: true и false (булевы константы)

В языке Arduino определены две константы для обозначения логических значений истины и лжи: true и false.

false

false всегда обозначает 0 (ноль).

true

Часто говорят, что true определяется как 1, что корректно; однако на самом деле применяется более широкая трактовка: true - это любое число, отличное от нуля. Таким образом, -1, 2 и -200 с точки зрения булевой логики эквивалентны true.

Замечание

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

Константы состояния пинов: HIGH и LOW

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

HIGH

Значение HIGH в применении к универсальному пину обозначает две разных ситуации - в зависимости от того, сконфигурирован он в режиме INPUT или OUTPUT через pinMode. В режиме INPUT, при чтении через digitalRead(), микроконтроллер распознает как HIGH любое напряжение выше 3 вольт на опрашиваемом входе.

В режиме INPUT работает и функция digitalWrite(). Если передать ей в качестве значения аргумента HIGH, она подключит внутренний подтягивающий резистор 20K, необходимый для правильной работы пина в схемах со свободным (плавающим) включением. Это предотвращает возврат случайных значений от digitalRead() в случае, если пин "болтается в воздухе" (например, если он подключен к кнопке, которая только по нажатию соединяет пин с землей): вместо случайного значения будет всегда возвращаться HIGH. Аналогичным образом работает режим INPUT_PULLUP (см. ниже).

В режиме OUTPUT запись HIGH через digitalWrite() устанавливает на пине напряжение 5 вольт. В этом режиме он может служить источником тока - например, зажигать включенный последовательно с резистором на землю светодиод или питать другой пин, сконфигурированный в качестве входа, но находящийся в состоянии LOW.

LOW

Значение LOW также обозначает две разные ситуации, в зависимости от того, сконфигурирован он в режиме INPUT или OUTPUT через pinMode. В режиме INPUT при чтении через digitalRead(), микроконтроллер распознает LOW как любое напряжение ниже 2 вольт на опрашиваемом пине.

В режиме INPUT также возможна и запись в пин через digitalWrite(), и в этом случае LOW будет отключать внутренние подтягивающие резисторы 20K.

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

Константы режимов пинов: INPUT, INPUT_PULLUP и OUTPUT

Универсальные цифровые пины могут быть сконфигурированы как INPUT, INPUT_PULLUP или OUTPUT. Обратите внимание, что пин не может быть одновременно и входом, и выходом - однако, его можно произвольным образом переключать по ходу программы. Учтите, что изменение режима "на ходу" через pinMode() существенно меняют поведение пина в электрической схеме.

Входные пины INPUT

Пины Arduino (Atmega), сконфигурированные как INPUT, переходят в "высокоимпендансный режим". Иначе говоря, сконфигурированный как INPUT пин оказывает ничтожно малое влияние на подключенную схему - как если бы последовательно входу был включен резистор порядка 100 МОм. Это делает его пригодным для считывания сенсоров, но не походит для питания светодиодов.

Входные пины INPUT_PULLUP

Пины Arduino (Atmega) имеют встроенные подтягивающие (т.е. подключенные к питанию) резисторы, которыми можно управлять. Если вы хотите включить их, передайте аргумент INPUT_PULLUP в функцию pinMode(). С точки зрения поведения сенсоров, HIGH будет означать выключение, а LOW - включение сенсора. Предлагаем также ознакомиться с обучающим материалом Input Pullup Serial.

Выходные пины OUTPUT

Пины, сконфигурированные как OUTPUT, находятся в "низкоимпендасном режиме". Это означает, что пин может быть частью какой-то схемы и способен пропускать через себя ток. Пины Atmega могут питать (быть источником напряжения) или принимать (выступать в качестве "земли") токи не более 40 мА (миллиампер). Такой пин может питать светодиоды, но бесполезен для считывания состояния сенсоров. Сконфигурированный таким образом пин также может быть выведен из строя токами большей величины - например, замыканием на землю или на шину питания +5В. К сожалению, этого тока недостаточно для прямого питания большинства реле и моторов, в этом случае требуются специальные переходные цепи.

Смотри также

Руководство по Wiring


Исправления, пожелания и новые статьи должны быть опубликованы через Форум.

Оригинальные тексты руководств и переводы распространяются Arduino и MK90 на условиях лицензии Creative Commons Attribution-ShareAlike 3.0 License. Примеры исходных кодов и ссылки являются общественным достоянием.