
Vídeo
Esquema do circuito

Código-fonte
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Traffic Light
4// ─────────────────────────────────────────
5// Traffic light cycle with red, yellow and green LEDs: red 2 s, yellow 0.3
6// s, green 2 s, yellow 0.3 s, then it starts over.
7//
8// Pins:
9// D2 -> Red LED
10// D3 -> Yellow LED
11// D4 -> Green LED
12// Each LED with a 330 ohm resistor
13
14void setup() {
15 pinMode(2,OUTPUT); // Red
16 pinMode(3,OUTPUT); // Yellow
17 pinMode(4,OUTPUT); // Green
18}
19
20void loop() {
21 // Red on, wait 2 s
22 digitalWrite(2,HIGH);
23 digitalWrite(3,LOW);
24 digitalWrite(4,LOW);
25 delay(2000);
26 // Yellow on, wait 0.3 s
27 digitalWrite(2,LOW);
28 digitalWrite(3,HIGH);
29 digitalWrite(4,LOW);
30 delay(300);
31 // Green on, wait 2 s
32 digitalWrite(2,LOW);
33 digitalWrite(3,LOW);
34 digitalWrite(4,HIGH);
35 delay(2000);
36 // Yellow on, then back to red
37 digitalWrite(2,LOW);
38 digitalWrite(3,HIGH);
39 digitalWrite(4,LOW);
40 delay(300);
41}
42
Perguntas frequentes
Por quanto tempo a luz amarela do semáforo deve ficar acesa?▾
Em semáforos reais, a luz amarela geralmente fica acesa por 3–4 segundos. No projeto, esse tempo é definido com `delay()`; deixar o vermelho e o verde acesos por mais tempo e o amarelo por menos tempo cria um ciclo próximo do real.
Por que usar um resistor de 330 Ω em vez de 220 Ω?▾
Um resistor de 330 Ω reduz um pouco mais a corrente (para cerca de 9–10 mA); os LEDs continuam bem visíveis e os pinos fornecem menos corrente no total. Também funciona com 220 Ω; os LEDs apenas ficam um pouco mais brilhantes.
Posso adicionar um botão para pedestres?▾
Sim. Você pode adicionar um botão de pressão e um resistor pull-down de 10 kΩ e ler o estado do botão com `digitalRead`. Quando o botão for pressionado, você pode mudar o ciclo para o vermelho e acender um LED verde separado para pedestres; usar `millis()` em vez de `delay` permite detectar o botão imediatamente.
Os LEDs acendem na ordem errada. O que devo fazer?▾
Compare as definições dos pinos no código (vermelho, amarelo e verde) com os fios do circuito, uma por uma. A forma mais fácil é acender cada LED com um código de teste separado e verificar a qual pino ele está ligado.
