const int PINO_VERDE_CARROS = 9;
const int PINO_AMARELO_CARROS = 10;
const int PINO_VERMELHO_CARROS = 11;
const int PINO_VERDE_PEDESTRES = 7;
const int PINO_VERMELHO_PEDESTRES = 8;
const int PINO_BUZZER = 12;
const int PINO_BOTAO = 13;
void setup() {
pinMode(PINO_VERDE_CARROS, OUTPUT);
pinMode(PINO_AMARELO_CARROS, OUTPUT);
pinMode(PINO_VERMELHO_CARROS, OUTPUT);
pinMode(PINO_VERDE_PEDESTRES, OUTPUT);
pinMode(PINO_VERMELHO_PEDESTRES, OUTPUT);
pinMode(PINO_BUZZER, OUTPUT);
pinMode(PINO_BOTAO, INPUT_PULLUP);
digitalWrite(PINO_VERDE_CARROS, HIGH);
digitalWrite(PINO_VERMELHO_PEDESTRES, HIGH);
}
void loop() {
bool botaoPressionado = digitalRead(PINO_BOTAO) == LOW;
if (botaoPressionado) {
delay(500);
liberarPedestres();
}
}
void liberarPedestres() {
digitalWrite(PINO_VERDE_CARROS, LOW);
digitalWrite(PINO_AMARELO_CARROS, HIGH);
delay(2000);
digitalWrite(PINO_AMARELO_CARROS, LOW);
digitalWrite(PINO_VERMELHO_CARROS, HIGH);
delay(1000);
digitalWrite(PINO_VERMELHO_PEDESTRES, LOW);
digitalWrite(PINO_VERDE_PEDESTRES, HIGH);
delay(5000);
for (int contador = 0; contador < 5; contador++) {
digitalWrite(PINO_VERDE_PEDESTRES, LOW);
noTone(PINO_BUZZER);
delay(400);
digitalWrite(PINO_VERDE_PEDESTRES, HIGH);
tone(PINO_BUZZER, 1000);
delay(400);
}
noTone(PINO_BUZZER);
digitalWrite(PINO_VERDE_PEDESTRES, LOW);
digitalWrite(PINO_VERMELHO_PEDESTRES, HIGH);
delay(1000);
digitalWrite(PINO_VERMELHO_CARROS, LOW);
digitalWrite(PINO_VERDE_CARROS, HIGH);
}