
Vídeo
Esquema do circuito

Código-fonte
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// ESP32 Traffic Light
4// ─────────────────────────────────────────
5// A traffic light cycle with red, yellow and green LEDs: red 3 s, red +
6// yellow 0.8 s, green 3 s, yellow 0.8 s.
7//
8// Pins:
9// GPIO 5 -> Red LED
10// GPIO 18 -> Yellow LED
11// GPIO 19 -> Green LED
12// Each LED with a 220 ohm resistor, cathodes to GND
13
14const int RED = 5; // Red LED pin
15const int YELLOW = 18; // Yellow LED pin
16const int GREEN = 19; // Green LED pin
17
18void setup() {
19 pinMode(RED, OUTPUT);
20 pinMode(YELLOW, OUTPUT);
21 pinMode(GREEN, OUTPUT);
22}
23
24void loop() {
25 // Red
26 digitalWrite(RED, HIGH);
27 digitalWrite(YELLOW, LOW);
28 digitalWrite(GREEN, LOW);
29 delay(3000);
30
31 // Red + Yellow
32 digitalWrite(YELLOW, HIGH);
33 delay(800);
34
35 // Green
36 digitalWrite(RED, LOW);
37 digitalWrite(YELLOW, LOW);
38 digitalWrite(GREEN, HIGH);
39 delay(3000);
40
41 // Yellow
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.
