Светофор на ESP32
Реалистичная симуляция светофора на 3 светодиодах — красном, жёлтом и зелёном. Тайминги близки к реальной логике движения: красный долго, жёлтый коротко, зелёный долго. Классический пример последовательного управления GPIO.

Видео
Схема

Исходный код
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Светофор на ESP32
4// ─────────────────────────────────────────
5// Цикл светофора на красном, жёлтом и зелёном светодиодах: красный 3 с,
6// красный + жёлтый 0,8 с, зелёный 3 с, жёлтый 0,8 с.
7//
8// Пины:
9// GPIO 5 -> Красный светодиод
10// GPIO 18 -> Жёлтый светодиод
11// GPIO 19 -> Зелёный светодиод
12// Каждый светодиод с резистором 220 ohm, катоды к GND
13
14const int RED = 5; // Пин красного светодиода
15const int YELLOW = 18; // Пин жёлтого светодиода
16const int GREEN = 19; // Пин зелёного светодиода
17
18void setup() {
19 pinMode(RED, OUTPUT);
20 pinMode(YELLOW, OUTPUT);
21 pinMode(GREEN, OUTPUT);
22}
23
24void loop() {
25 // Красный
26 digitalWrite(RED, HIGH);
27 digitalWrite(YELLOW, LOW);
28 digitalWrite(GREEN, LOW);
29 delay(3000);
30
31 // Красный + жёлтый
32 digitalWrite(YELLOW, HIGH);
33 delay(800);
34
35 // Зелёный
36 digitalWrite(RED, LOW);
37 digitalWrite(YELLOW, LOW);
38 digitalWrite(GREEN, HIGH);
39 delay(3000);
40
41 // Жёлтый
42 digitalWrite(GREEN, LOW);
43 digitalWrite(YELLOW, HIGH);
44 delay(800);
45 digitalWrite(YELLOW, LOW);
46}
47
Частые вопросы
Чем он отличается от кода светофора на Arduino?
Логика та же, отличаются только номера пинов на ESP32. Из-за выхода 3,3 V светодиоды могут светиться чуть тусклее; для более яркого света можно взять резистор 100–150 Ω.
Можно ли управлять светофором с телефона?
Да, используя Wi-Fi у ESP32, можно поднять маленький веб-сервер и управлять огнями из браузера. Это главное, что отличает ESP32 от Arduino.
Как сделать длительности реалистичными?
На настоящих перекрёстках зелёный и красный горят 20–60 секунд, а жёлтый — 3–4 секунды. Во время проверки можно сократить ожидания, а для презентации выставить реальные значения.
Какие пины выбрать?
Выбирай пины вроде GPIO 25, 26 и 27, у которых нет особой функции при запуске. GPIO 0, 2, 12 и 15 влияют на режим загрузки, и подключённые к ним схемы могут мешать плате запуститься.
