Последовательное включение светодиодов

На этом занятии мы будем включать последовательно шкалу из светодиодов. Также мы рассмотрим уже знакомый цикл for в языке программирования Ардуино.

На этом занятии мы будем включать последовательно шкалу из десятка светодиодов. Научившись управлять несколькими светодиодами на предыдущих занятиях, разобраться с последовательным включением светодиодов на Ардуино не составит труда. Также мы рассмотрим уже знакомый нам цикл 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 = 11; // последний пин со светодиодом

void setup() {
   // задаем пин со 2 по 11, как выход (OUTPUT)
   for(i=LedMin; i<=LedMax; i++) { pinMode(i, OUTPUT); }
}

void loop() {
   // последовательно зажигаем светодиоды со 2 по 11 пин
   for(i=LedMin; i<=LedMax; i++) {
      digitalWrite(i, HIGH);
      delay(50);
   }

   // последовательно гасим светодиоды с 11 по 2 пин
   for(i=LedMax; i>=LedMin; i--) {
      digitalWrite(i, LOW);
      delay(50);
   }
}

Пояснения к коду:

  1. цикл loop в скетче содержит в себе два цикла for, работающих попеременно;
  2. переменная типа byte может хранить 8-битное беззнаковое число от 0 до 255.

В следующем примере изменен порядок последовательного выключения светодиодов на Ардуино. Для этого во втором цикле for все условия повторяются, меняется лишь состояние пинов у светодиодов в цикле с HIGH на LOW.

Скетч последовательного выключения светодиодов

byte i;           // задаем переменную для цифровых выходов
byte LedMin = 2;  // первый пин со светодиодом
byte LedMax = 11; // последний пин со светодиодом

void setup() {
   // задаем пин со 2 по 11, как выход (OUTPUT)
   for(i=LedMin; i<=LedMax; i++) { pinMode(i, OUTPUT); }
}

void loop() {
   // последовательно зажигаем светодиоды со 2 по 11 пин
   for(i=LedMin; i<=LedMax; i++) {
      digitalWrite(i, HIGH);
      delay(50);
   }

   // последовательно гасим светодиоды со 2 по 11 пин
   for(i=LedMin; i<=LedMax; i++) {
      digitalWrite(i, LOW);
      delay(50);
   }
}

Пояснения к коду:

  1. цикл for повторяется до тех пор, пока верно условие i>LedMin или i<LedMax.
  2. если попробовать удалить из программы задержку delay(50);, то эффекта последовательного зажигания светодиодов не будет.
1 Star2 Stars3 Stars4 Stars5 Stars (7 votes, average: 4,71 out of 5)
Загрузка...

3 комментариев для “Пример: Последовательное включение светодиодов”

    1. Спасибо. Поменяли условия в цикле for для последовательного включения светодиодов Ардуино. Сейчас скетч должен работать правильно.

  1. а зачем задавать пины с 2 по 13? почему не по 11? 12 и 13 же вообще не используются

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *