Светодиоды Knight Rider на ESP32
6 светодиодов по очереди бегают слева направо и справа налево (в стиле Knight Rider). Базовый пример использования циклов for и массивов. Учит логике смены направления.

Видео
Схема

Исходный код
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Светодиоды Knight Rider на ESP32
4// ─────────────────────────────────────────
5// 6 светодиодов загораются по одному слева направо, затем обратно справа
6// налево (эффект Knight Rider). Показывает массивы и циклы for в обе
7// стороны.
8//
9// Пины:
10// GPIO 5, 18, 19, 21, 22, 23 -> 6 светодиодов (по порядку)
11// Каждый светодиод с резистором 330 ohm, катоды к GND
12
13const int LED_PINS[] = {5, 18, 19, 21, 22, 23}; // Пины светодиодов по порядку
14const int LED_COUNT = 6; // Количество светодиодов
15const int DELAY_MS = 100; // Время свечения каждого светодиода (мс)
16
17void setup() {
18 // Все пины светодиодов как выходы
19 for (int i = 0; i < LED_COUNT; i++) {
20 pinMode(LED_PINS[i], OUTPUT);
21 }
22}
23
24void loop() {
25 // Вправо
26 for (int i = 0; i < LED_COUNT; i++) {
27 digitalWrite(LED_PINS[i], HIGH);
28 delay(DELAY_MS);
29 digitalWrite(LED_PINS[i], LOW);
30 }
31 // Влево: крайние светодиоды пропускаются, чтобы отскок выглядел плавно
32 for (int i = LED_COUNT - 2; i >= 1; i--) {
33 digitalWrite(LED_PINS[i], HIGH);
34 delay(DELAY_MS);
35 digitalWrite(LED_PINS[i], LOW);
36 }
37}
38
Частые вопросы
Хватит ли тока ESP32 на 6 светодиодов?
Рекомендуемый ток для каждого GPIO — около 20 mA; с резистором 330 Ω каждый светодиод потребляет 3–5 mA. Одновременно горит только один светодиод, поэтому общий ток очень мал.
Зачем хранить пины в массиве?
Номера пинов идут не подряд (5, 18, 19, 21, 22, 23), поэтому массив позволяет обходить их по одному в цикле. При добавлении светодиода обнови и массив LED_PINS, и LED_COUNT; чтобы изменить только порядок, достаточно поправить массив.
Можно ли ускорить эффект?
Уменьши значение delay() между шагами. Значение от 40 до 80 ms даёт плавный эффект Knight Rider.
Можно ли использовать светодиодную ленту вместо светодиодов?
Да, с адресуемой лентой WS2812B (NeoPixel) можно управлять сотнями светодиодов с одного пина и зажигать каждый своим цветом. Для длинных лент нужен отдельный источник 5 V.
