Semáforo com ESP32
Simulação de um semáforo real com 3 LEDs: vermelho, amarelo e verde. Os tempos se aproximam da lógica real: vermelho longo, amarelo curto e verde longo. Um exemplo clássico de controle sequencial de GPIOs.

Vídeo
Esquema do circuito

Código-fonte
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Semáforo com ESP32
4// ─────────────────────────────────────────
5// Ciclo de semáforo com LEDs vermelho, amarelo e verde: vermelho 3 s,
6// vermelho + amarelo 0.8 s, verde 3 s, amarelo 0.8 s.
7//
8// Pinos:
9// GPIO 5 -> LED vermelho
10// GPIO 18 -> LED amarelo
11// GPIO 19 -> LED verde
12// Cada LED com resistor de 220 ohm, catodos no GND
13
14const int RED = 5; // Pino do LED vermelho
15const int YELLOW = 18; // Pino do LED amarelo
16const int GREEN = 19; // Pino do LED verde
17
18void setup() {
19 pinMode(RED, OUTPUT);
20 pinMode(YELLOW, OUTPUT);
21 pinMode(GREEN, OUTPUT);
22}
23
24void loop() {
25 // Vermelho
26 digitalWrite(RED, HIGH);
27 digitalWrite(YELLOW, LOW);
28 digitalWrite(GREEN, LOW);
29 delay(3000);
30
31 // Vermelho + amarelo
32 digitalWrite(YELLOW, HIGH);
33 delay(800);
34
35 // Verde
36 digitalWrite(RED, LOW);
37 digitalWrite(YELLOW, LOW);
38 digitalWrite(GREEN, HIGH);
39 delay(3000);
40
41 // Amarelo
42 digitalWrite(GREEN, LOW);
43 digitalWrite(YELLOW, HIGH);
44 delay(800);
45 digitalWrite(YELLOW, LOW);
46}
47
Perguntas frequentes
Qual é a diferença em relação ao código de semáforo no Arduino?
A lógica é a mesma; apenas os números dos pinos mudam para o ESP32. Por causa da saída de 3,3 V, os LEDs podem brilhar um pouco menos; para mais brilho, você pode usar um resistor de 100–150 Ω.
Posso controlar o semáforo pelo celular?
Sim, com o Wi-Fi do ESP32, você pode criar um pequeno servidor web e controlar as luzes pelo navegador. Esse é o principal recurso que diferencia o ESP32 do Arduino.
Como deixar os tempos realistas?
Em cruzamentos reais, as luzes verde e vermelha ficam acesas por 20–60 segundos, e a amarela por 3–4 segundos. Nos testes, você pode reduzir os tempos de espera e depois usar os valores reais na apresentação.
Quais pinos devo escolher?
Escolha pinos como GPIO 25, 26 e 27, que não têm função especial na inicialização. Como GPIO 0, 2, 12 e 15 afetam o modo de inicialização, circuitos conectados a eles podem impedir que a placa inicie.
