#define ledverde 21
#define ledamarillo 19
#define ledrojo 18
#define boton 15
#define peatonalverde 5
#define peatonalrojo 4
int a=0;
void IRAM_ATTR semaforo() {
a=1;
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(boton, INPUT);
pinMode(ledverde, OUTPUT);
pinMode(ledamarillo, OUTPUT);
pinMode(ledrojo, OUTPUT);
pinMode(peatonalverde, OUTPUT);
pinMode(peatonalrojo, OUTPUT);
attachInterrupt(boton, semaforo, RISING);
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
a=0;
digitalWrite(peatonalrojo, HIGH);
encender_led(ledverde);
parpadear_led(ledverde);
encender_led(ledamarillo);
apagar(ledamarillo);
digitalWrite(ledrojo, HIGH);
if(a == 0) {
encender_led(peatonalrojo);
apagar(peatonalrojo);
}else{
digitalWrite(peatonalrojo, LOW);
encender_led(peatonalverde);
apagar(peatonalverde);
}
apagar(ledrojo);
}
void parpadear_led (int led) {
for (int i = 0; i < 3; i++) {
digitalWrite(led, HIGH);
delay(250);
digitalWrite(led, LOW);
delay(250);
}
}
void encender_led (int leds) {
digitalWrite(leds, HIGH);
delay(1200);
}
void apagar(int led) {
digitalWrite(led, LOW);
}