Бегущий огонёк

В этом эксперименте мы заставляем огонёк бежать по светодиодной шкале.

Список деталей для эксперимента

  • 1 светодиодная шкала
  • 10 резисторов номиналом 220 Ом
  • 11 проводов

Схема на макетке

Скетч

            // светодиодная шкала подключена к группе пинов расположенных
// подряд. Даём понятные имена первому и последнему пинам
#define FIRST_LED_PIN  2
#define LAST_LED_PIN   11
 
void setup()
{
  // в шкале 10 светодиодов. Мы бы могли написать pinMode 10
  // раз: для каждого из пинов, но это бы раздуло код и
  // сделало его изменение более проблематичным.
  // Поэтому лучше воспользоваться циклом. Мы выполняем
  // pinMode для (англ. for) каждого пина (переменная pin)
  // от первого (= FIRST_LED_PIN) до последнего включительно
  // (<= LAST_LED_PIN), всякий раз продвигаясь к следующему
  // (++pin увеличивает значение pin на единицу)
  // Так все пины от 2-го по 11-й друг за другом станут выходами
  for (int pin = FIRST_LED_PIN; pin <= LAST_LED_PIN; ++pin)
    pinMode(pin, OUTPUT);
}
 
void loop()
{
  // получаем время в миллисекундах, прошедшее с момента
  // включения микроконтроллера
  unsigned int ms = millis();
  // нехитрой арифметикой вычисляем, какой светодиод
  // должен гореть именно сейчас. Смена будет происходить
  // каждые 120 миллисекунд. Y % X — это остаток от
  // деления Y на X; плюс, минус, скобки — как в алгебре.
  int pin = FIRST_LED_PIN + (ms / 120) % 10;
  // включаем нужный светодиод на 10 миллисекунд, затем —
  // выключаем. На следующем проходе цикла он снова включится,
  // если гореть его черёд, и мы вообще не заметим отключения
  digitalWrite(pin, HIGH);
  delay(10);
  digitalWrite(pin, LOW);
}            
            

Обратите внимание

  • Обратите внимание, что в данном эксперименте резисторы установлены между катодами и землей в отличие от эксперимента пульсар.
  • Мы подключаем светодиоды к цифровым портам, начиная с порта 2. Мы можем использовать порты 0 и 1, но они являются каналами передачи данных последовательного порта и для каждой перепрошивки платы придется отключать устройства, подключенные к ним.