Использование цифровых входов/выходов Arduino
Цифровые входы и выходы (цифровые I/O) на платах Arduino позволяют подключать к Arduino датчики, приводы и другие микросхемы. Изучение того, как использовать их, позволит вам использовать Arduino для выполнения реально полезных вещей, таких как чтение состояния входных переключателей, подсветка индикаторов и управление релейными выходами.
Цифровые сигналы
В отличие от аналоговых сигналов, которые могут принимать любое значение в пределах диапазона, цифровые сигналы имеют только два отдельных значения: высокий (HIGH
, 1) и низкий (LOW
, 0) уровни. Вы можете использовать цифровые сигналы в ситуациях, где вход или выход будет принимать одно из этих двух значений. Например, одним из случаев, когда вы можете использовать цифровой сигнал, это включение и выключение светодиода.
Функции
В данной статье мы будем использовать следующие связанные с цифровыми сигналами функции Arduino:
pinMode()
digitalRead()
digitalWrite()
pinMode (pin_number, mode)
- Поскольку цифровые I/O выводы Arduino могут использоваться в качестве и входа, и выхода, вы должны сначала настроить выводы, которые вы собираетесь использовать для цифрового ввода/вывода, с помощью данной функции.
pin_number
– это номер вывода, который вы хотите настроить. Режим,mode
, может принимать одно из трех значений:INPUT
,OUTPUT
илиINPUT_PULLUP
. Когдаmode
устанавливается в значениеINPUT_PULLUP
, к выводу подключается внутренний подтягивающий резистор 20 кОм, чтобы привести уровень на выводе к значению HIGH, если к нему ничего не подключено. digitalWrite(pin_number,value)
- Данная функция записывает цифровое значение в вывод.
pin
задает, в какой вывод на плате Arduino будет записано цифровое значение, аvalue
– это цифровое значение, в которое будет установлен вывод.value
может принимать только значенияHIGH
иLOW
. digitalRead(pin_number)
- Данная функция считывает цифровое значение из вывода.
pin
– это номер цифрового I/O вывода, который вы собираетесь прочитать. Данная функция возвращает одной из двух значений:HIGH
илиLOW
Эксперимент 1: мигание светодиодом, используя задержку
В этом эксперименте мы будем включать и выключаеть светодиод, используя цифровой выход.
Необходимые комплектующие
- 1 x светодиод;
- 1 x резистор 220 Ом;
- 1 x Arduino UNO;
- 1 x макетная плата;
- 2 x перемычка.
Схема соединений
На рисунке выше показано, как подключить светодиод и резистор 220 Ом к Arduino. Как показано, светодиод подключен к цифровому I/O выводу 8 платы Arduino через резистор. Резистор контролирует ток через светодиод. Программа ниже сначала настраивает вывод 8 на выход, затем устанавливает цифровой I/O вывод в состояние высокого уровня HIGH
на 1000 мс, затем в состояние низкого уровня LOW
на следующие 1000 мс.
Программа для эксперимента 1
const int led = 8; // использовать цифровой I/O вывод 8
void setup()
{
pinMode(led,OUTPUT); // установить вывод 8 в режим выхода
}
void loop()
{
delay(1000); // ждем 1000 миллисекунд
digitalWrite(led,HIGH); // установить вывод 8 в состояние высокого уровня, включая светодиод
delay(1000); // ждем 1000 миллисекунд
digitalWrite(led,LOW); // установить вывод 8 в состояние низкого уровня, выключая светодиод
}
Запуск эксперимента
- подключите анод светодиода к одному концу резистора, а другой конец резистора к цифровому I/O выводу 8 на плате Arduino;
- подключите вывод GND платы Arduino к катоду светодиода;
- подключите Arduino к компьютеру, используя USB кабель, и загрузите прошивку, используя программу Arduino IDE;
- подайте питание на плату Arduino, используя источник питания, батарею или USB кабель;
- светодиод должен начать мигать.
Эксперимент 2: мигание светодиодом, используя кнопку
Данный эксперимент не только демонстрирует, как использовать цифровой выход, но и как использовать цифровой вход. Нажатие кнопки, подключенной к цифровому входу, будет включать или выключать светодиод. Программа использует обе функции: и digitalWrite()
, и digitalRead()
.
Необходимые комплектующие
- 1 x светодиод;
- 2 x резистор 220 Ом;
- 1 x кнопка;
- 1 x Arduino UNO;
- 1 x макетная плата;
- 6 x перемычка.
Схема соединений
Как вы можете видеть на диаграмме выше, мы теперь используем 2 цифровых I/O вывода платы Arduino. Светодиод подключен к выводу 8, который настроен как выход. Кнопка подключена к выводу 9, который настроен как вход. Когда кто-то нажимает на кнопку, состояние на выводе 9 устанавливается в высокий уровень, HIGH
, и программа устанавливает на выводе 8 тоже высокий уровень и включает светодиод. Отпускание кнопки сбрасывает вывод 9 на низкий уровень, LOW
. Программа при этом устанавливает низкий уровень и на выводе 8, что выключает светодиод.
Код
const int led = 8; // называем вывод 8 для светодиода, как led
const int button = 9; // называем вывод 9 для кнопки, как button
void setup()
{
pinMode(led,OUTPUT); // устанавливаем вывод 8 на выход
pinMode(button,INPUT) ; // устанавливаем вывод 9 на вход
}
void loop()
{
int reads = digitalRead(button); // прочитать цифровое значение на выводе 9
digitalWrite(led,reads); // установить цифровое выходное значение на выводе 8 в прочитанное значение
}
Запуск эксперимента
- соберите схему, как показано на рисунке выше;
- подключите Arduino к компьютеру, используя USB кабель, и загрузите прошивку, используя программу Arduino IDE;
- подайте питание на плату Arduino, используя источник питания, батарею или USB кабель;
- нажмете кнопку, чтобы зажечь светодиод. Отпустите кнопку, чтобы погасить светодиод.