Сегодня сделаем проект «Бегущий огонек», или «Рыцарь дорог», для тех, кто в теме
Для реализации проекта вам понадобятся:
- 8 светодиодов;
- 8 резисторов 220 ом;
- Соединительные провода.
Расположите на макетной плате 8 красных светодиодов в линию и подключите их к разным портам, идущим друг за другом.
Нужно создать эффект бегущего туда-сюда огонька. Для решения будем использовать циклы (подробнее о циклах читайте здесь). Сначала в цикле обозначим требуемые пины как выходы:
1 2 3 4 5 |
void setup() { for (int i=6; i<=13; i++){ pinMode(i, OUTPUT); } } |
Дальше логика следующая: включаем очередной светодиод на короткое время (например, 100 мс), гасим его и осуществляем переход к следующему светодиоду:
1 2 3 4 5 6 7 |
void loop() { for (int i=6; i<=13; i++){ digitalWrite(i, HIGH); delay(100); digitalWrite(i, LOW); } } |
Теперь огонек бежит в одну сторону, доходит до конца и начинает сначала. Добавим ниже проход в обратную сторону. Для этого изменим начальное значение в цикле (13 порт), условие (>=6) и изменение переменной (уменьшение на 1):
1 2 3 4 5 |
for (int i=13; i>=6; i--){ digitalWrite(i, HIGH); delay(100); digitalWrite(i, LOW); } |
Полный код программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
void setup() { for (int i=6; i<=13; i++){ pinMode(i, OUTPUT); } } void loop() { for (int i=6; i<=13; i++){ digitalWrite(i, HIGH); delay(100); digitalWrite(i, LOW); } for (int i=13; i>=6; i--){ digitalWrite(i, HIGH); delay(100); digitalWrite(i, LOW); } } |
Попробуйте поменять задержку и подобрать наиболее приятный вам вариант.
Для усложнения можете изменить программу так, чтобы в каждый момент времени горел не один светодиод, а два.