Главная chevron_right Функции chevron_right Цифровой ввод/вывод chevron_right digitalWrite()

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().