#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);
  }