const int BTN_PEDESTRE = 2;
const int LED_VERDE_CARRO = 3;
const int LED_AMARELO_CARRO = 4;
const int LED_VERMELHO_CARRO = 5;
const int LED_VERDE_PEDESTRE = 6;
const int LED_VERMELHO_PEDESTRE = 7;
const int BUZZER = 8;
bool cicloAtivo = false;
void setup() {
pinMode(BTN_PEDESTRE, INPUT_PULLUP);
pinMode(LED_VERDE_CARRO, OUTPUT);
pinMode(LED_AMARELO_CARRO, OUTPUT);
pinMode(LED_VERMELHO_CARRO, OUTPUT);
pinMode(LED_VERDE_PEDESTRE, OUTPUT);
pinMode(LED_VERMELHO_PEDESTRE, OUTPUT);
pinMode(BUZZER, OUTPUT);
digitalWrite(LED_VERDE_CARRO, 1);
digitalWrite(LED_AMARELO_CARRO, 0);
digitalWrite(LED_VERMELHO_CARRO, 0);
digitalWrite(LED_VERDE_PEDESTRE, 0);
digitalWrite(LED_VERMELHO_PEDESTRE, 1);
digitalWrite(BUZZER, 0);
Serial.begin(115200);
}
void loop() {
if (digitalRead(BTN_PEDESTRE) == 0 && !cicloAtivo) {
cicloAtivo = true;
Serial.println("Botao pressionado!");
delay(2000);
digitalWrite(LED_VERDE_CARRO, 0);
digitalWrite(LED_AMARELO_CARRO, 1);
delay(3000);
digitalWrite(LED_AMARELO_CARRO, 0);
digitalWrite(LED_VERMELHO_CARRO, 1);
digitalWrite(LED_VERMELHO_PEDESTRE, 0);
digitalWrite(LED_VERDE_PEDESTRE, 1);
delay(5000);
for (int i = 0; i < 6; i++) {
digitalWrite(LED_VERDE_PEDESTRE, 1);
tone(BUZZER, 1000);
delay(300);
digitalWrite(LED_VERDE_PEDESTRE, 0);
noTone(BUZZER);
delay(300);
}
digitalWrite(LED_VERDE_PEDESTRE, 0);
digitalWrite(LED_VERMELHO_PEDESTRE, 1);
noTone(BUZZER);
delay(1000);
digitalWrite(LED_VERMELHO_CARRO, 0);
digitalWrite(LED_VERDE_CARRO, 1);
cicloAtivo = false;
}
}