СОДЕРЖАНИЕ ►
На этом занятии мы будем включать последовательно шкалу из десятка светодиодов. Научившись управлять несколькими светодиодами на предыдущих занятиях, разобраться с последовательным включением светодиодов на Ардуино не составит труда. Также мы рассмотрим уже знакомый нам цикл for, который служит для повторения операторов в конструкции и служит своего рода циклом в цикле loop.
Последовательное включение светодиодов на Ардуино

Для данной задачи можно использовать простейший скетч из нашего первого занятия — Что такое Ардуино. В скетче можно прописать последовательное включение всех светодиодов с заданной скоростью и дальнейшее их последовательное выключение. Но можно и воспользоваться циклом for, который значительно упростит нашу задачу. Во первых, с помощью данного цикла мы можем задать количество светодиодов.
byte i; // задаем переменную для цифровых выходов byte LedMax = 13; // максимальное количество выходов (диодов) void setup() { // задаем пины со 2 по 13, как выходы (OUTPUT) for(i=2; i<LedMax; i++) { pinMode(i, OUTPUT); } }
Вместо прописывания в скетче всех пинов с 2 по 13, как выходы, мы воспользовались одним циклом for. Сразу отметим, что использование всех выходов на Ардуино для последовательного включения светодиодов или подключения светодиодной шкалы не рационально. На практике для этого используют сдвиговый регистр 74hc165 или, еще более простой вариант драйвер светодиодов М5450В7 для микроконтроллера Ардуино.
Подключение светодиодной шкалы к Ардуино
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- 11 светодиодов или светодиодная шкала;
- 11 резисторов на 220 Ом;
- провода «папа-папа» и «папа-мама».

Соберите схему из светодиодов на макетной плате или подключите к Ардуино светодиодную шкалу, как на рисунке выше. Обратите внимание, что в светодиодной шкале нет встроенных резисторов, поэтому не забывайте их добавить в схему, чтобы диоды не сгорели. После сборки схемы скопируйте скетч последовательного включения светодиодной шкалы на Arduino UNO и загрузите в плату.
Скетч последовательного включения светодиодов
byte i; // задаем переменную для цифровых выходов byte LedMin = 2; // первый пин со светодиодом byte LedMax = 10; // последний пин со светодиодом void setup() { // задаем пин со 2 по 10, как выход (OUTPUT) for(i=LedMin; i<=LedMax; i++) { pinMode(i, OUTPUT); } } void loop() { // последовательно зажигаем светодиоды со 2 по 10 пин for(i=LedMin; i<=LedMax; i++) { digitalWrite(i, HIGH); delay(50); } // последовательно гасим светодиоды с 10 по 2 пин for(i=LedMax; i>=LedMin; i--) { digitalWrite(i, LOW); delay(50); } }
Пояснения к коду:
- цикл
loopв скетче содержит в себе два цикла for, работающих попеременно; - переменная типа
byteможет хранить 8-битное беззнаковое число от 0 до 255.
В следующем примере изменен порядок последовательного выключения светодиодов на Ардуино. Для этого во втором цикле for все условия повторяются, меняется лишь состояние пинов у светодиодов в цикле с HIGH на LOW. В коде используются глобальные переменные типа byte, поэтому их можно вызывать в любом месте программы, в отличии от локальных переменных в языке Ардуино.
Скетч последовательного выключения светодиодов
byte i; // задаем переменную для цифровых выходов byte LedMin = 2; // первый пин со светодиодом byte LedMax = 10; // последний пин со светодиодом void setup() { // задаем пин со 2 по 10, как выход (OUTPUT) for(i=LedMin; i<=LedMax; i++) { pinMode(i, OUTPUT); } } void loop() { // последовательно зажигаем светодиоды со 2 по 10 пин for(i=LedMin; i<=LedMax; i++) { digitalWrite(i, HIGH); delay(50); } // последовательно гасим светодиоды со 2 по 10 пин for(i=LedMin; i<=LedMax; i++) { digitalWrite(i, LOW); delay(50); } }
Пояснения к коду:
- цикл
forповторяется до тех пор, пока верно условиеi>LedMinилиi<LedMax. - если попробовать удалить из программы задержку
delay(50);, то эффекта последовательного зажигания светодиодов не будет.










2й не тухнет 13й не загорается
Спасибо. Поменяли условия в цикле for для последовательного включения светодиодов Ардуино. Сейчас скетч должен работать правильно.
а зачем задавать пины с 2 по 13? почему не по 11? 12 и 13 же вообще не используются
Код годный, но
1) как сказала Варвара-смысл задавать по 13 если используется по 11
2) на схеме синий провод не нужен, а вот от 5в кинуть не помешает
1) это на тот случай, если кто-нибудь решит подключить больше светодиодов для последовательного зажигания
2) без синего провода в схеме никак не обойтись — это общее заземление (GND), так как пины Ардуино выдают +5 Вольт
А как сделать так что бы первый зажегся-погас 2 зажегся погас и тд
может кому пригодиться
for(i=LedMin; i<=LedMax; i++) {
digitalWrite(i, HIGH);
delay(1000);
digitalWrite (i, LOW);
delay (1000);
А так лучше самому пробовать на практике
Не подскажете как можно подключить последовательное включение светодиодов на Ардуино но около 100светодиодов
Никак. Здесь лучше использовать адресную ленту есть еще вариант использования микросхемы М5450В7, но это намного сложнее
как зажечь светодиоды с двух сторон до центрального светодиода одновременно и выключить обратно?
Неплохо бы сократить его
byte i;
byte LedMin = 2;
byte LedMax = 10;
void setup() {
for(i = LedMin; i <= LedMax; i++){
pinMode(i, OUTPUT);
}
}
void loop() {
for (i = LedMin; i = LedMin; i—) {
if(i = 6) {
digitalWrite(6, LOW);
} delay(200);
if(i = 5) {
digitalWrite(5, LOW);
digitalWrite(7, LOW);
} delay(200);
if(i = 4) {
digitalWrite(4, LOW);
digitalWrite(8, LOW);
} delay(200);
if(i = 3) {
digitalWrite(3, LOW);
digitalWrite(9, LOW);
} delay(200);
if(i = 2) {
digitalWrite(2, LOW);
digitalWrite(10, LOW);
} delay(200);
break;
}
}
все сделал правильно, но не чего не работает, скрипт вел в программу, проверил работает скрипт или нет, включаю на плату, НЕ РАБОТАЕТ, пытался переставлял все , НЕ ПОМОГАЕТ, помогите пожалуйста!!!!!
Спасибо, все сработало, хочу порекомендовать пользователям сделать следующее:
1) Замените половину красных светодиодов жёлтыми и зелёными (в последовательности: красный_желтый_зеленый и т.д.).
2) Подключите светодиоды к пинам в случайном порядке (например: первый светодиод не к пину 2, а к пину 6, второй — к пину 3, третий — к пину 9 и т. д.). Светодиоды будут гореть не по порядку, а в другой последовательности.
По такому принципу работают простые елочные гирлянды.