Objetivo do Projeto
Simular um semáforo real com o ciclo: Verde → Amarelo → Vermelho. Na fase amarela o buzzer emite bipes de alerta.
🟢
Verde
5 segundos — passa
5000ms🟡
Amarelo
2 segundos — cuidado + buzzer
2000ms🔴
Vermelho
5 segundos — stop
5000msLigação
🔌 Ligações completas
| Arduino | → | Componente |
|---|---|---|
| Pino 11 | → | Resistência 220Ω → LED Vermelho (+) |
| Pino 12 | → | Resistência 220Ω → LED Amarelo (+) |
| Pino 13 | → | Resistência 220Ω → LED Verde (+) |
| Pino 8 | → | Buzzer Ativo (+) |
| GND | → | Cátodo dos 3 LEDs + Buzzer (−) |
Código
semaforo.ino
// Pinos
const int LED_VERDE = 13;
const int LED_AMARELO = 12;
const int LED_VERMELHO = 11;
const int BUZZER = 8;
// Tempos (ms)
const int T_VERDE = 5000;
const int T_AMARELO = 2000;
const int T_VERMELHO = 5000;
void setup() {
pinMode(LED_VERDE, OUTPUT);
pinMode(LED_AMARELO, OUTPUT);
pinMode(LED_VERMELHO, OUTPUT);
pinMode(BUZZER, OUTPUT);
}
void desligaTodos() {
digitalWrite(LED_VERDE, LOW);
digitalWrite(LED_AMARELO, LOW);
digitalWrite(LED_VERMELHO, LOW);
digitalWrite(BUZZER, LOW);
}
void faseVerde() {
desligaTodos();
digitalWrite(LED_VERDE, HIGH);
delay(T_VERDE);
}
void faseAmarelo() {
desligaTodos();
digitalWrite(LED_AMARELO, HIGH);
// Bipes de alerta durante a fase amarela
for (int i = 0; i < 4; i++) {
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(300);
}
}
void faseVermelho() {
desligaTodos();
digitalWrite(LED_VERMELHO, HIGH);
delay(T_VERMELHO);
}
void loop() {
faseVerde();
faseAmarelo();
faseVermelho();
}
🎯 Desafio Extra
🔘
Botão de Peão
Adiciona um botão que, quando premido, acelera a passagem para o vermelho para os peões atravessarem.
⏱️
Temporizador no LCD
Adiciona o LCD para mostrar a contagem decrescente de cada fase em tempo real.