Перейти к основному содержимому

Мигание светодиодом

Скриншот схемы Tinkercad: Arduino Uno, внешний светодиод и резистор

Мигающий светодиод — небольшая, но полноценная система управления. Контроллер выполняет команды по порядку, меняет состояние вывода, выдерживает заданное время и снова начинает тот же цикл. На этой системе удобно отделить электрическую цепь от алгоритма и проверить каждую часть независимо.

Коротко

Чтобы светодиод мигал, программа по очереди устанавливает на цифровом выходе два состояния: включено и выключено. Между переключениями стоят блоки ожидания, а вся последовательность находится внутри бесконечного цикла.

Зачем это нужно

Световой сигнал — один из самых простых способов увидеть работу микроконтроллера без дополнительных измерительных приборов. Если светодиод мигает с ожидаемым ритмом, уже подтверждены сразу несколько вещей: программа загрузилась, выбранный вывод работает как выход, команды выполняются по порядку, а электрическая цепь замкнута.

Тот же принцип встречается в роботах и электронных устройствах:

  • индикатор сообщает, что питание включено;
  • короткие вспышки показывают передачу данных;
  • разный ритм различает ожидание, работу и ошибку;
  • маяк делает движущегося робота заметнее;
  • периодический сигнал подтверждает, что основной цикл программы продолжает выполняться.

Первый проект не должен одновременно решать много задач. Один внешний светодиод позволяет сосредоточиться на трех базовых понятиях: цифровой выход, последовательность команд и повторение. Эти понятия затем используются при управлении реле, зуммером, драйвером мотора и другими исполнительными устройствами.

Главная идея

Цифровой выход удобно представить как управляемый программой переключатель. В одном состоянии вывод создает уровень, при котором ток идет через правильно подключенный светодиод, — он светится. В другом состоянии ток прекращается — светодиод гаснет.

Алгоритм состоит из четырех действий:

  1. включить выход;
  2. подождать;
  3. выключить выход;
  4. снова подождать.

После четвертого действия цикл возвращается к первому. Если убрать первое ожидание, включенная фаза получится слишком короткой. Если убрать второе, выключенная фаза почти исчезнет. Поэтому оба блока ожидания участвуют в видимом ритме.

Сначала собираем безопасную цепь

Внешний светодиод подключают не напрямую между выводом и землей, а последовательно с токоограничивающим резистором. Путь тока в используемой здесь схеме такой:

цифровой вывод → резистор → светодиод → GND

Резистор можно поставить до или после светодиода: в последовательной цепи через оба элемента течет один ток. На рисунке он расположен между выходом контроллера и светодиодом, чтобы путь легко читался слева направо.

У светодиода есть полярность. Анод подключают к стороне более высокого потенциала, катод — к стороне более низкого. У нового выводного светодиода длинная ножка часто является анодом, а плоская грань корпуса часто отмечает катод, но надежнее свериться с документацией конкретного компонента. Если светодиод развернуть, в обычной учебной цепи он, скорее всего, не загорится.

Почему нужен резистор

Светодиод не ограничивает ток до безопасного значения сам. Последовательный резистор принимает часть напряжения и задает ток цепи. Номинал выбирают по напряжению питания, прямому напряжению светодиода, допустимому току светодиода и возможностям вывода контроллера.

Для предварительного расчета применяют закон Ома:

R = (Uпитания − Uсветодиода) / I

Например, если источник дает 5 В, на красном светодиоде при выбранном рабочем режиме остается около 2 В, а расчетный ток равен 0,01 А, получается 300 Ом. Из стандартного ряда выбирают ближайшее большее значение, например 330 Ом. Это учебный расчет, а не универсальный номинал: параметры платы и светодиода нужно проверять по их документации. Больший резистор обычно уменьшает ток и яркость, но не следует уменьшать сопротивление ради яркости без проверки допустимых токов.

Часть цепиРольЧто проверить перед запуском
Цифровой выводсоздает управляемое состояниеномер вывода и допустимый ток платы
Резисторограничивает токрасчетный и установленный номинал
Светодиодпревращает электрическую энергию в светполярность и допустимый ток
GNDзамыкает путь тока к общей точкенадежность соединения с землей платы

Встроенный светодиод и его соединение с контроллером зависят от платы. Перед использованием сверяются с официальной документацией именно этой модели. В этом уроке рассматривается внешний светодиод по явно показанной цепи: при активном высоком уровне он включается, при низком — выключается.

Как читать визуальную программу

В Tinkercad блоки выхода показаны синим, а ожидание и повторение относятся к группе Control. Названия на скриншоте могут быть английскими, но цвет и место группы помогают найти команду.

Условная группаСмысл в алгоритмеКогда выполняется
Стартовая настройканазначить выбранный вывод цифровым выходомодин раз после запуска
Контейнер повторениявыполнять вложенные команды снова и сновапока контроллер работает
Установить выходвключить или выключить светодиодв своей точке последовательности
Ожиданиесохранить текущее состояние заданное времяпосле каждого переключения

Настройка вывода нужна до первого управления. Tinkercad генерирует нужную настройку из блока управления контактом. Это можно увидеть в режиме Blocks + Text как pinMode(..., OUTPUT).

В Tinkercad для первого мигания достаточно четырёх блоков: включить LED, подождать, выключить LED, снова подождать. Если блоки находятся в области постоянного повторения, программа возвращается к верхнему действию и ритм продолжается.

Один оборот цикла

Скриншот Tinkercad: блоки мигания встроенным светодиодом

На скриншоте видно, как блочная программа задаёт два состояния светодиода и две паузы. Реальное подключение внешнего светодиода с резистором показано на первом скриншоте урока; встроенный LED удобен для самой первой проверки блоков без проводов.

Проследим выполнение с момента включения питания:

  1. Контроллер запускается и выполняет стартовую настройку вывода.
  2. Первый блок внутри цикла устанавливает активное состояние.
  3. Светодиод остается включенным на протяжении первого ожидания.
  4. Следующий блок устанавливает неактивное состояние.
  5. Светодиод остается выключенным на протяжении второго ожидания.
  6. Контейнер повторения возвращает выполнение к первому блоку цикла.

Время полного мигания называют периодом. Для двух фаз оно равно сумме длительностей:

T = tвключено + tвыключено

Если обе паузы равны одной секунде, период равен двум секундам, а полный цикл повторяется один раз за две секунды. Частота повторения связана с периодом формулой f = 1 / T, если период выражен в секундах. При равных паузах светодиод половину периода включен и половину выключен.

Не следует путать частоту мигания со скоростью работы микроконтроллера. Контроллер выполняет команды намного быстрее, но блок ожидания намеренно удерживает состояние. При очень коротких паузах глаз перестает различать отдельные вспышки, и свет кажется почти постоянным. Это не означает, что цикл прекратился.

Сборка блоков по шагам

В проекте уже стоит модель Arduino Uno R3. В синем блоке Output выберите цифровой контакт, к которому на схеме подключён светодиод. Номер выбирается в выпадающем списке самого блока.

Дальше соберите программу в следующем порядке:

  1. Поместите блок настройки цифрового вывода в стартовую область.
  2. Добавьте контейнер постоянного повторения.
  3. Внутри него установите на выбранном выводе активное состояние.
  4. Добавьте ожидание и задайте понятную для наблюдения длительность.
  5. Установите на том же выводе неактивное состояние.
  6. Добавьте второе ожидание.
  7. Проверьте, что все четыре блока действительно находятся внутри повторения и соединены сверху вниз.

Перед запуском полезно прочитать блоки вслух как инструкцию: «после старта подготовить выход; всегда включать, ждать, выключать, ждать». Такое чтение быстро обнаруживает пропущенную паузу, неверный вывод или блок вне цикла.

После проверки нажмите Start Simulation. Tinkercad создаст код и запустит его на виртуальной Arduino. Если появилась ошибка, сначала прочитайте её и сверьте номер контакта, полярность и целостность цепи. Изменяйте схему только после Stop Simulation.

Как искать ошибку без догадок

Меняйте по одному условию и после каждого изменения снова наблюдайте результат.

НаблюдениеВероятная причинаПервая проверка
светодиод никогда не горитперепутана полярность, разрыв, неверный выводцепь от вывода через резистор и LED до GND
светодиод горит постояннонет блока выключения или второй паузы, выбран другой физический выводпорядок блоков и номер вывода
вспышки не различимыслишком короткие ожиданияувеличить обе длительности
ритм несимметриченпаузы имеют разные значения или единицызначения и единицы времени в обоих блоках
симуляция не запускаетсяв схеме или коде есть незавершённое изменениеостановите модель, проверьте соединения и снова нажмите Start Simulation
внешний LED не работает, встроенный мигаетпрограмма управляет встроенным выводомсопоставить блок и провод внешней цепи

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

Что запомнить о цифровом мигании

ПравилоПрактическое следствие
Выход имеет два логических состоянияпростой LED либо включен, либо выключен
Внешнему LED нужен последовательный резисторнельзя соединять его с выводом без ограничения тока
Полярность LED имеет значениепри обратном включении он не выполняет ожидаемую роль
Настройка выполняется до циклавывод готовят один раз, а переключают многократно
Два ожидания образуют две видимые фазыбез одного из них ритм искажается
Период равен сумме длительностей фазчастоту можно изменить через паузы
Номер вывода должен совпадать с проводомправильный алгоритм не исправит неверное подключение

Пример: индикатор готовности

После запуска робот может медленно мигать, пока ожидает команду. Когда команда получена, другой алгоритм меняет состояние индикатора. На первом этапе достаточно реализовать только режим ожидания и убедиться, что ритм устойчив.

Пример: различимые сигналы

Одна длинная вспышка и две короткие — уже простейший световой код. Он строится теми же блоками установки выхода и ожидания, только длительности и число фаз различаются. Для повторяемого кода всю последовательность помещают в один контейнер цикла.

Практика

Задание 1

Соберите программу с одинаковыми фазами включения и выключения. Измерьте секундомером время десяти полных циклов и оцените длительность одного цикла.

Задание 2

Сделайте короткую вспышку и длинную паузу. Запишите выбранные длительности и нарисуйте временную полосу одного периода без готового ответа в блоках.

Задание 3

Создайте повторяющийся сигнал из двух коротких вспышек и одной длинной паузы. До запуска симуляции перечислите все блоки в точном порядке выполнения.

Задание 4

Подготовьте таблицу диагностики для трех специально внесенных ошибок: обратная полярность LED, неверный номер вывода и пропущенное ожидание. Для каждой укажите наблюдение и безопасный способ проверки.

Проверьте себя

  1. Почему внешний светодиод подключают последовательно с резистором?
  2. Какой путь проходит ток в цепи из этого урока?
  3. Что выполняется один раз, а что повторяется постоянно?
  4. Зачем в цикле нужны два блока ожидания?
  5. Из чего складывается период одного мигания?
  6. Почему при очень коротких паузах свет может казаться постоянным?
  7. Что нужно проверить, если программа загрузилась, но LED не светится?
  8. Почему в Tinkercad полезно сравнивать схему и блоки программы на одном экране?
Ориентиры для самопроверки

Сначала ответьте без подсказки. Ответ можно считать полным, если вы:

  • формулируете основную мысль своими словами;
  • называете важные условия, ограничения или меры безопасности;
  • для схемы, кода или расчёта показываете ход решения и ожидаемый результат.

Если один из пунктов объяснить не получается, найдите соответствующую главу статьи, перечитайте её и повторите ответ.

Словарь статьи

ТерминОпределение
Цифровой выходвывод контроллера, которому программа задает одно из двух логических состояний
Активный уровеньсостояние выхода, при котором устройство выполняет выбранное действие
Светодиодполупроводниковый источник света с определенной полярностью включения
Анодвывод светодиода, обращенный к стороне более высокого потенциала при прямом включении
Катодвывод светодиода, обращенный к стороне более низкого потенциала при прямом включении
Токоограничивающий резисторпоследовательный элемент, задающий безопасный ток через LED
Циклучасток алгоритма, который выполняется повторно
Ожиданиекоманда, сохраняющая текущее состояние на заданное время
Периодвремя одного полного повторения включенной и выключенной фаз
Частотачисло полных повторений за единицу времени

Связанные темы

Источники