Вступление
В этом эксперименте мы начнем постигать основы анимации светодиодов, реализовав эффект преследования.
Мы поупражняемся в применении циклов для достижения различных эффектов свечения линейки из светодиодов.
Предупреждение! Светодиоды могут давать очень яркое свечение. Берегите свое зрение, особенно если вы работаете в плохо освещенном помещении!
Необходимые компоненты
Нам понадобится 5 LED. С меньшим числом светодиодов эффект будет не столь интересным
- 5 LED
- 5 резисторов не менее 220R
Я рекомендую резисторы 2-3K, чтобы светодиоды не слепили глаза, особенно когда они зажигаются одновременно.
- 6 перемычек
Схема сборки
Соберем вот такую базовую схему:

Будьте внимательны! Каждый светодиод притягивается к земле одинаковым сопротивлением. Перед включением ардуино, убедитесь, что подключили все правильно и подключили землю. В случае ошибки, есть большая вероятность, что светодиоды выйдут из строя.
Скетч
/** * (C) jarduino.ru 2019 * Изучение ардуино через опыты. * * Опыт №5. Управление светодиодами. Эффект преследования */ // Глобальные параметры: const int nDelay = 60; // задержка между загоранием светодиодов в мсек. /* * В этом примере предполагается, что светодиоды подключены к цифровым портам по порядку. * Т.е., например, 1й светодиод - к порту №2, 2й - к порту №3 и т.д. * * Таким образом, нам достаточно задать только 2 параметра: * - номер порта первого светодиода * - номер порта последнего светодиода.*/ const int pin1 = 5; // номер первого пина const int pin2 = 10; // Число светодиодов // Прочие глобальные переменные и константы: const int pin3 = pin2 + 1; // номер последнего пина + 1 void setup() { for (int i = pin1; i < pin3; ++i) { pinMode(i, OUTPUT); } } // выставляет светодиодам статус bState через каждые nDelay мсек. void chaseLed(bool bState, const int t_nDelay = nDelay) { for (int i = pin1; i < pin3; i++) { digitalWrite(i, bState); delay(t_nDelay); } } void loop() { // зажечь светодиоды по одному: chaseLed(HIGH); // погасить светодиоды по одному: chaseLed(LOW); }
Обратите внимание на параметры в начале скетча. Вы можете указать задержку между загоранием следующего светодиода, а также подогнать скетч под свою сборку, указав номер порта первого светодиода и кол-во светодиодов.
Результат

Объяснения
В этим эксперименте мы используем цикл for, чтобы зажигать и гасить светодиоды по порядку.
Все происходит в функции chaseLed. У нее 2 параметра: состояние (HIGH – зажечь, LOW – погасить) и задержка между загоранием светодиодов. Такие параметры позволяют нам использовать одну и ту же функцию как для включения, так и для выключения светодиода.
Заключение
С помощью этого скетча возможно управлять 12 светодиодами. Напомню, что цифровых портов у ардуино Nano и Uno всего 14. Но первые два (0 и 1) у нас чаще заняты прошивкой платы. Конечно, можно использовать и их, но это не очень удобно, поскольку потребуется переключать перемычки для прошивки платы. А с портами с 2 по 13 никаких проблем.
Напомню, что аналоговые порты тоже можно использовать как цифровые. Их у нас 6. Итого у нас может быть 18 светодиодов. Аналоговые порты имеют номера с 14 по 21.
Если собрать схему из 18 светодиодов, то результат будет более зрелищным.
А если хочется подключить 19, 100, 1000 светодиодов? И это возможно! Но для этого потребуется использовать специальные микросхемы, называемые сдвиговыми регистрами. В одном из будущих экспериментов мы обязательно это сделаем!
Смотрите на нашем сайте и другие скетчи для анимации светодиодов.
В одном следующих эксперименте мы изучим массивы и научимся гибко подстраивать скетч анимации светодиодов под различные схемы сборки.