Проект 13. Новогодний огонёк

В этом проекте мы научимся пульсировать светодиодами, управляя яркостью свечения с помощью цикла. Самое сложное - сделать переливающиеся огоньки, когда свет плавно перетекает из одного светодиода в другой.

Оборудование:

TrafficLight

Программирование:

Цикл for

PWM

Практика

Запрограммируйте светодиоды следующим образом: При помощи цикла for необходимо увеличивать яркость зелёного светодиода каждые 10 миллисекунд, после достижения максимальной яркости светодиода, через цикл for уменьшать яркость каждые 10 миллисекунд. Когда светодиод погаснет необходимо повторить эти действия с жёлтым, а потом красным светодиодом.

Дополнительное задание

Сделать асинхронную пульсацию: пока один светодиод разгорается, другой в это время гаснет. Сделать пульсацию одним циклом. Подумать как доработать пульсацию на три светодиода.

Решение

Мы рекомендуем сначала освоить материал и попробовать сделать программу самостоятельно! А потом проверить себя, посмотрев наш вариант решения:

#include <Eryoma.h>
Eryoma eryoma;

void setup() {
  eryoma.setupConnector(ePort1, TrafficLight);
}

void loop() {
  for (int i = 0; i < 256; i++) {
    eryoma.write(ePort1, i, 0, 0);
    delay(10);
  }
  for (int i = 255; i > -1; i--) {
    eryoma.write(ePort1, i, 0, 0);
    delay(10);
  }
  for (int i = 0; i < 256; i++) {
    eryoma.write(ePort1, 0, i, 0);
    delay(10);
  }
  for (int i = 255; i > -1; i--) {
    eryoma.write(ePort1, 0, i, 0);
    delay(10);
  }
  for (int i = 0; i < 256; i++) {
    eryoma.write(ePort1, 0, 0, i);
    delay(10);
  }
  for (int i = 255; i > -1; i--) {
    eryoma.write(ePort1, 0, 0, i);
    delay(10);
  }
}

#include <Eryoma.h>
Eryoma eryoma;

void setup() {
  eryoma.setupConnector(ePort1, TrafficLight);
}

void loop() {
  for (int i = 0; i < 256; i++) {
    eryoma.write(ePort1, i, 255 - i, i);
    delay(10);
  }
  for (int i = 255; i > -1; i--) {
    eryoma.write(ePort1, i, 255 - i, i);
    delay(10);
  }
}