Перейти к содержанию

Поочередное включение светодиодов от Ардуино

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

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

Необходимые компоненты:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • светодиоды
  • резисторы
  • макетная плата
  • коннекторы

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

  1. Плавное включение и выключение светодиодов
  2. Включение светодиода кнопкой от Ардуино
  3. Подключение RGB светодиода к Ардуино Уно

Обратите внимание, что задействованные пины со 2 по 11 мы используем в режиме OUTPUT, как выходы. Для этого использовали единственный цикл for в процедуре setup — с командой pinMode(i, OUTPUT); Отметим, что нерационально использовать все выходы платы для последовательного переключения светодиодов или подключения светодиодной шкалы. На практике для этих целей лучше использовать сдвиговый регистр 74HC595.

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

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

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

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


 

byte LedMin = 2;
byte LedMax = 11;

void setup() {
  for (byte i = LedMin; i <= LedMax; i++) {
    pinMode(i, OUTPUT);
  }
}

void loop() {
  for (byte i = LedMin; i <= LedMax; i++) {
    digitalWrite(i, HIGH);
    delay(50);
  }
 
  for (byte i = LedMax; i >= LedMin; i--) {
    digitalWrite(i, LOW);
    delay(50);
  }
}

Последовательное мигание светодиодами (бегущий огонек)

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

В следующем примере будет происходить последовательное мерцание светодиодами — скетч бегущий огонёк на Arduino. Схема сборки остается прежней, а в программе добавится команда в цикле for для выключения светодиода. Таким образом получится эффект мерцающего огонька на Ардуино. Направление включения светодиодов можно изменить в условии цикла for, а количество светодиодов можно увеличить при необходимости.

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

byte LedMin = 2;
byte LedMax = 11;

void setup() {
  for (byte i = LedMin; i <= LedMax; i++) {
    pinMode(i, OUTPUT);
  }
}

void loop() {
  for (byte i = LedMin; i <= LedMax; i++) {
    digitalWrite(i, HIGH);
    delay(50);
    digitalWrite(i, LOW);
  }
 
  for (byte i = LedMax; i >= LedMin; i--) {
    digitalWrite(i, HIGH);
    delay(50);
    digitalWrite(i, LOW);
  }
}

Последовательное и плавное мигание светодиодами

Последовательное и плавное мигание светодиодами

В следующем примере будет использоваться команда analogWrite, чтобы происходило последовательное мигание с плавным розжигом светодиодов. Поэтому в схеме используется только 6 пинов микроконтроллера Arduino Uno (Nano), поддерживающих ШИМ модуляцию. Если у вас плата Arduino Mega 2560, то вы можете также использовать в схеме 10 светодиодов, так как на этой плате все пины со 2 по 13 поддерживают ШИМ.

Скетч поочередного плавного розжига светодиодов

// перечисляем пины с ШИМ модуляцией
byte LedPin[] = {0, 3, 5, 6, 9, 10, 11};

void setup() {
  for (byte i = 0; i < 6; i++) {
    pinMode(LedPin[i], OUTPUT);
  }
}

void loop() {
  for (byte i = 0; i < 6; i++) {
    for (byte x = 0; x <= 250; x++) {
      analogWrite(LedPin[i], x);
      analogWrite(LedPin[i - 1], 250 - x);
      delay(2);
    }
    delay(50);
  }
 
  for (byte i = 6; i > 0; i--) {
    for (byte x = 0; x <= 250; x++) {
      analogWrite(LedPin[i], x);
      analogWrite(LedPin[i + 1], 250 - x);
      delay(2);
    }
    delay(50);
  }
}

Заключение. Во всех представленных примерах с поочередным миганием лампочек используются глобальные переменные типа byte, которые могут быть вызваны в любом месте программы, в отличие от локальных переменных в языке микроконтроллера Arduino. Что этот тип переменных может хранить целое число от 0 до 255. Если у вас есть вопросы по рассмотренной теме, оставляйте их в комментариях к этой записи.

Комментарии 1

  • Благодарю!
    Всё предельно ясно и информативно.
    Дальше всё зависит только от собственного воображения .

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

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

newzaym
➜