#define PIN_SENSOR 2
#define PIN_LED_VERDE_CAR 3
#define PIN_LED_AMARELO_CAR 4
#define PIN_LED_VERMELHO_CAR 5
#define PIN_LED_VERDE_PED 6
#define PIN_LED_VERMELHO_PED 7
int modo = 0;
void setup() {
pinMode(PIN_SENSOR, INPUT);
for (int i = 3; i <= 7; i++) {
pinMode(i, OUTPUT);
}
attachInterrupt(digitalPinToInterrupt(PIN_SENSOR), SensorAcionado, FALLING);
}
void loop() {
switch (modo) {
case 0:
modocarros();
break;
case 1:
travessia();
break;
}
}
void SensorAcionado() {
modo = 1;
}
void travessia() {
delay(1000);
digitalWrite(PIN_LED_VERDE_CAR, LOW);
digitalWrite(PIN_LED_AMARELO_CAR, HIGH);
delay(3000);
digitalWrite(PIN_LED_VERDE_PED, HIGH);
digitalWrite(PIN_LED_VERMELHO_PED, LOW);
digitalWrite(PIN_LED_AMARELO_CAR, LOW);
digitalWrite(PIN_LED_VERMELHO_CAR, HIGH);
delay(5000);
digitalWrite(PIN_LED_VERDE_PED, LOW);
for (int i = 0; i < 5; i++) {
digitalWrite(PIN_LED_VERDE_PED, HIGH);
delay(300);
digitalWrite(PIN_LED_VERMELHO_PED, LOW);
delay(300);
}
modo = 0;
}
void modocarros() {
digitalWrite(PIN_LED_VERDE_PED, LOW);
digitalWrite(PIN_LED_VERMELHO_PED, HIGH);
digitalWrite(PIN_LED_VERDE_CAR, HIGH);
digitalWrite(PIN_LED_AMARELO_CAR, LOW);
digitalWrite(PIN_LED_VERMELHO_CAR, LOW);
}