Главная chevron_right Уроки chevron_right Встроенные примеры chevron_right Основы chevron_right Blink — мигание светодиодом на Arduino

Blink — мигание светодиодом на Arduino

Классический первый урок Arduino: заставляем встроенный светодиод мигать раз в секунду с помощью digitalWrite() и delay().

Это самый первый и самый известный пример для Arduino — мигающий светодиод. Именно с него начинают знакомство с платформой, потому что он наглядно показывает: плата работает, код загружается, физический мир реагирует на команды программы.

Необходимое оборудование

Дополнительно (для внешнего светодиода):

  • Светодиод (LED)
  • Резистор 220 Ом

Схема подключения

В этом примере используется встроенный светодиод, который есть на большинстве плат Arduino. Он подключён к одному из цифровых пинов, и номер этого пина отличается от платы к плате. Чтобы не запоминать конкретный номер, в Arduino IDE введена специальная константа LED_BUILTIN — она автоматически подставляет правильный пин для той платы, которую вы выбрали в меню. Вот соответствие константы и пина для разных плат:

  • D13 — 101
  • D13 — Due
  • D1 — Gemma
  • D13 — Intel Edison
  • D13 — Intel Galileo Gen2
  • D13 — Leonardo и Micro
  • D13 — LilyPad
  • D13 — LilyPad USB
  • D13 — MEGA2560
  • D13 — Mini
  • D6 — MKR1000
  • D13 — Nano
  • D13 — Pro
  • D13 — Pro Mini
  • D13 — UNO
  • D13 — Yún
  • D13 — Zero

Если хотите подключить внешний светодиод, соберите схему ниже. Один конец резистора подключите к цифровому пину, соответствующему константе LED_BUILTIN. К другому концу резистора подключите длинную ножку светодиода — это анод, положительный вывод. Короткую ножку (катод, отрицательный вывод) соедините с GND. На схеме показана плата UNO, у которой значение LED_BUILTIN равно D13.

Почему нужен резистор? Резистор ограничивает ток через светодиод и защищает и сам светодиод, и выходной пин Arduino от перегрева и выхода из строя. Номинал подбирается по закону Ома (V = I × R): из напряжения питания (5 В или 3,3 В) вычитается прямое напряжение светодиода (для красного — обычно 1,8–2,2 В), и результат делится на желаемый ток. Резистор 220 Ом — хороший универсальный выбор для пятивольтовых плат: светодиод светит достаточно ярко и при этом ток остаётся в безопасных пределах. Для плат с питанием 5 В светодиод будет хорошо виден при сопротивлении вплоть до 1 кОм — можно регулировать яркость, меняя номинал резистора.

Схема подключения: светодиод и резистор на макетной плате, соединённые с пином 13 и GND платы Arduino UNO.

Принципиальная схема

Принципиальная схема урока Blink: Arduino UNO соединён с резистором 220 Ом и светодиодом (LED) последовательно между пином 13 и GND. На схеме подпись компонента — РЕЗИСТОР 220 Ом.

Код

Соберите схему, подключите плату Arduino к компьютеру через USB, откройте Arduino IDE и введите код ниже. Также его можно открыть через меню File → Examples → 01.Basics → Blink.

Разберём, что происходит в программе.

Первым делом в setup() пин встроенного светодиода объявляется как выход:

pinMode(LED_BUILTIN, OUTPUT);

Без этой строки пин остаётся в режиме входа и светодиод не будет реагировать на команды.

В основном цикле loop() светодиод включается командой:

digitalWrite(LED_BUILTIN, HIGH);

Это подаёт 5 вольт на анод светодиода, создаёт разность потенциалов — и светодиод загорается.

Затем светодиод выключается:

digitalWrite(LED_BUILTIN, LOW);

Пин возвращается в состояние 0 вольт, ток прекращается, светодиод гаснет.

Между включением и выключением стоят команды delay() — они заставляют плату «ждать» 1000 миллисекунд (одну секунду), ничего не делая. Именно эта пауза даёт нам видимое мигание.

Важно понимать: пока выполняется delay(), никакой другой код не работает. Для простого мигания это нормально, но если нужно одновременно делать что-то ещё — изучите пример BlinkWithoutDelay: он показывает, как организовать задержку без блокировки программы.

Когда освоите этот пример, переходите к DigitalReadSerial — там разбирается, как считывать состояние кнопки, подключённой к плате.

Как проверить результат

После загрузки кода встроенный светодиод (обычно помечен на плате как L или ON) должен начать мигать с интервалом одна секунда: секунду горит, секунду не горит. Если вы подключили внешний светодиод — он будет мигать синхронно со встроенным.

Типичные ошибки

  • Светодиод не мигает, а просто горит или не горит — скорее всего, код не загрузился. Проверьте, правильно ли выбрана плата и порт в меню Tools.
  • Внешний светодиод не светится — убедитесь, что анод (длинная ножка) подключён через резистор к пину, а катод (короткая ножка) — к GND. Светодиод, вставленный наоборот, работать не будет.
  • Забыли резистор — светодиод может сгореть, а пин Arduino — повредиться. Резистор обязателен при работе с внешним светодиодом.
  • Используете константу 13 вместо LED_BUILTIN — код будет работать только на UNO и совместимых платах. Используйте LED_BUILTIN для переносимости.

См. также

Дополнительные материалы

Больше базовых уроков можно найти в разделе built-in examples.

Также рекомендуем изучить language reference — подробный справочник по языку программирования Arduino.

Последнее обновление: 28.07.2015, SM