digitalWrite()
digitalWrite() подаёт HIGH или LOW на цифровой вывод — управляет светодиодами, реле и другими устройствами. Перед вызовом обязательно настройте вывод через pinMode().
Полная статья
Описание
digitalWrite() управляет логическим уровнем на цифровом выводе: устанавливает HIGH или LOW.
Когда вывод переведён в режим OUTPUT через pinMode(), функция подаёт на него напряжение: 5 В (или 3,3 В на соответствующих платах) для HIGH и 0 В для LOW.
Если же вывод настроен как INPUT, поведение меняется: digitalWrite() не управляет внешним напряжением, а включает (HIGH) или отключает (LOW) внутренний подтягивающий резистор. Чтобы явно задействовать подтяжку, удобнее использовать режим INPUT_PULLUP в pinMode() — он делает то же самое автоматически при инициализации.
Важно: если вывод не переведён в режим
OUTPUTи к нему подключён светодиод, при вызовеdigitalWrite(pin, HIGH)светодиод может слабо светиться. Это не настоящий выходной сигнал —digitalWrite()лишь активирует внутренний подтягивающий резистор, который ограничивает ток как очень большой резистор. Всегда вызывайтеpinMode()передdigitalWrite().
Синтаксис
digitalWrite(pin, value)
Параметры
pin— номер цифрового вывода Arduino, которым нужно управлять.value— желаемый уровень:HIGHилиLOW.
Возвращает
Функция ничего не возвращает.
Пример кода
Скетч настраивает цифровой вывод 13 Arduino (встроенный светодиод) как OUTPUT и попеременно переключает его между HIGH и LOW с интервалом в одну секунду — классический «Blink».
void setup() {
pinMode(13, OUTPUT); // устанавливает цифровой пин 13 как выход
}
void loop() {
digitalWrite(13, HIGH); // включает цифровой пин 13
delay(1000); // ждёт одну секунду
digitalWrite(13, LOW); // выключает цифровой пин 13
delay(1000); // ждёт одну секунду
}
Где применяется
- Управление светодиодами — включить или выключить индикатор состояния.
- Управление реле — подать сигнал на модуль реле для коммутации нагрузки.
- Генерация сигналов — быстрое переключение вывода для формирования тактового или управляющего сигнала.
- Активация модулей — подать питание или сигнал выбора на внешнее устройство (например, CS-линия SPI).
Практические замечания
- Всегда вызывайте
pinMode(pin, OUTPUT)передdigitalWrite(), иначе вывод останется в режиме входа и физического изменения напряжения не произойдёт. - Максимальный ток одного вывода обычно составляет 40 мА — для светодиода используйте токоограничивающий резистор, чтобы не повредить микроконтроллер.
digitalWrite()работает только с логическими уровнями. Для плавного управления яркостью или скоростью используйтеanalogWrite()на PWM-выводах.- Аналоговые входы A0–A5 можно использовать как цифровые выводы, передавая их номера в
digitalWrite(). Исключение — контакты A6 и A7 Arduino на платах Nano, Pro Mini и Mini: они работают только как аналоговые входы и не поддерживают цифровой вывод. - Если светодиод или другая нагрузка ведёт себя неожиданно, первым делом проверьте, вызван ли
pinMode()с правильным режимом доdigitalWrite().