Что такое цифровые порты в Arduino?[]
Цифровые входы и выходы (порты) на Arduino – это то, что позволяет подключать датчики, исполнительные механизмы и другие микросхемы и модули к Arduino. Изучение того, как их использовать, позволит задействовать Arduino для выполнения некоторых действительно полезных вещей, таких как считывание входов переключателя, активации индикаторов и управления релейными выходами.
Одной из базовых отличительных особенностей Arduino от других аналогичных платформ является способность выводов функционировать как выходы и входы. Кроме того, основная часть аналоговых входов могут эксплуатироваться как цифровые порты выхода и входа.
Количество цифровых портов в:
- Arduino Uno - 14
- Arduino Nano - 14
- Arduino Mega - 54
Порты ввода/вывода[]
Свойства порта вводы/вывода (pin), сконфигурированного как порт ввода[]
Сконфигурированные порты ввода-вывода в качестве порта вывода характеризуются состоянием с низким импедансом. Они могут пропускать большой ток, быть его источником и потребителем.
Сила тока достигает 40 мА, что вполне достаточно для питания светодиода с последовательным резистором. С другой стороны этого явно мало для подключения реле, компактных двигателей или соленоидов.
Другой особенностью портов является необходимость избегать коротких замыканий. В подобной ситуации отключается цифровой вывод, несмотря на то, что сама схема продолжит функционировать. Если не используются датчики или реле с высоким потреблением энергии, лучше подключать их к платформе через резисторы 470 Ом или 1 кОм..
Подтягивающие (нагрузочные) резисторы[]
Если на порт ввода не поступает сигнал, то в данном случае рекомендуется задать порту известное состояние. Это делается добавлением подтягивающих резисторов 10 кОм, подключающих вход либо к +5 В (подтягивающие к питанию резисторы), либо к земле (подтягивающие к земле резисторы).
Микроконтроллер Atmega имеет программируемые встроенные подтягивающие к питанию резисторы 20 кОм. Программирование данных резисторов осуществляется следующим образом.
pinMode(pin, INPUT); // назначить выводу порт ввода
|
digitalWrite(pin, HIGH); // включить подтягивающий резистор
|
Подтягивающий резистор пропускает ток достаточный для того, чтобы слегка светился светодиод подключенный к выводу, работающему как порт ввода. Также легкое свечение светодиодов означает то, что при программировании вывод не был настроен как порт вывода в функции pinMode().Особенностью 13-ого вывода микросхемы является подключение к нему резистора и светодиода.
Подтягивающие резисторы управляются теми же регистрами (внутренние адреса памяти микроконтроллера), что управляют состояниями вывода: HIGH или LOW. Следовательно, если вывод работает как порт ввода со значением HIGH, это означает включение подтягивающего к питанию резистора, то конфигурация функцией pinMode() порта вывода на данном выводе микросхемы передаст значение HIGH. Данная процедура работает и в обратном направлении, т.е. если вывод имеет значение HIGH, то конфигурация вывода микросхемы как порта ввода функцией pinMode() включит подтягивающий к питанию резистор.
Функции работы с цифровыми портами Arduino[]
Функции Arduino, связанные с цифровыми линиями, следующие: pinMode(), digitalRead(), digitalWrite().
Функция pinMode()[]
Функция pinMode (pin_number, mode): Поскольку цифровые линии Arduino могут использоваться для ввода или вывода, вы должны сначала сконфигурировать контакты, которые вы собираетесь использовать для цифрового ввода-вывода. Здесь pin_number это номер контакта, который вы хотите настроить. Режим mode должен принимать одно из трех значений: INPUT, OUTPUT, INPUT_PULLUP.
-Режим pinNPUT определяет высокоимпедансное состояние пина для работы с внешними источниками сигналов. Другими словами, в этом состоянии вы можете подключить практически любую нагрузку, потому что к входу неявным образом подключается высокоомный резистор.
-В режиме pinOUTPUT Arduino поддерживает пин в низкоимпедансном состоянии, при котором на внешнее устройство выдается максимально возможный ток (плата, по сути, становится источником тока). В этом режиме обычно работают пины Arduino с подключенными светодиодами, сервоприводами (маломощными), реле, драйверами двигателей и другими внешними устройствами, являющимися для Arduino внешними. Для установки пина в режим OUTPUT нужно использовать следующую команду: pinMode(<номер порта>, OUTPUT).
-В режиме INPUT_PULLUP пин работает в режиме входа, но Arduino неявно для нас подключает к входной цепи внутренний подтягивающий резистор. При этом поступление сигнала с датчика будет «инвертироваться», т.е. высокий уровень будет приводить к нулю на входе, низкий, наоборот, оставит на пине высокое напряжение.
Режим INPUT_PULLUP широко используется при работе с кнопками в Arduino. В ненажатом состоянии, подключенная к пину, кнопка создает неопределенное состояние (а провод, ведущий к Arduino выступает в роли своеобразной антены, усиливающей все наводки). Для исправления ситуации в схему добавляют подтягивающий резистор. Использование команды pinMode с параметром INPUT_PULLUP позволяет обойтись без дополнительного внешнего сопротивления, используя внутренний резистор Arduino.
Функция digitalWrite()[]
Функция digitalWrite(pin_number,value): Эта функция записывает цифровое значение в регистр линии. Аргумент pin_number определяет номер этой линии, а value это выходное значение, то есть HIGH или LOW.
Функция digitalRead()[]
Функция digitalRead(pin_number): Эта функция считывает цифровое значение с линии под номером pin_number. Она возвращает одно из двух значений: HIGH или LOW.
.