/* Defino los pines del ESP 32 que se van a usar en el programa para trabajar con mayor comodidad */
#define led_rojo_coches 18
#define led_verde_coches 19
#define led_amarillo_coches 21
#define led_verde_peatones 25
#define led_rojo_peatones 32
int boton_no_pulsado = 0;
int tic;int tac = 0;
int tiempo = 250;
void setup()
{
// Inicializamos la comunicación con el puerto serie
Serial.begin(115200);
// Inicializamos los pines del ESP 32 que se van a utilizar en el programa
pinMode(led_rojo_coches, OUTPUT);
pinMode(led_verde_coches, OUTPUT);
pinMode(led_amarillo_coches, OUTPUT);
pinMode(led_rojo_peatones, OUTPUT);
pinMode(led_verde_peatones, OUTPUT);
// Configuro los leds para la situación inicial
digitalWrite(led_rojo_coches, LOW); // Rojo de los coches apagado
digitalWrite(led_amarillo_coches, LOW); // Amarillo de los coches apagado
digitalWrite(led_verde_coches, HIGH); // Verde de los coches encendido
digitalWrite(led_rojo_peatones, HIGH); // Rojo de los peatones encendido
digitalWrite(led_verde_peatones, LOW); // Verde de los peatones apagado
}
void loop()
{
// Estado inicial
digitalWrite(led_rojo_coches, LOW);
digitalWrite(led_amarillo_coches, LOW);
digitalWrite(led_verde_coches, HIGH);
digitalWrite(led_verde_peatones, LOW);
tic = millis();
tac = 0;
while (tac-tic <=5000) //5 segundos en este estado
{
if(tac-tic>=tiempo)
{
//Parpadeo rojo peatones
if ((digitalRead(led_rojo_peatones))==0)
{
digitalWrite(led_rojo_peatones, HIGH);
}
else
{
digitalWrite(led_rojo_peatones, LOW);
}
tiempo+=250; //cada 250 ms parpadea
}
tac = millis();
}
// encendemos el amarillo de los coches y apagamos el verde de los coches
digitalWrite(led_verde_coches, LOW);
digitalWrite(led_amarillo_coches, HIGH);
digitalWrite(led_rojo_coches, HIGH);
tic = millis();
tac = 0;
tiempo = 250;
while (tac-tic <=2000)//2 segundos en este estado
{
if(tac-tic>=tiempo)
{
//Parpadeo rojo peatones
if ((digitalRead(led_rojo_peatones))==0)
{
digitalWrite(led_rojo_peatones, HIGH);
}
else
{
digitalWrite(led_rojo_peatones, LOW);
}
tiempo+=250; //cada 250 ms parpadea
}
tac = millis();
}
//encendemos el rojo de los coches y apagamos el amarillo de los coches
digitalWrite(led_amarillo_coches, LOW);
digitalWrite(led_rojo_coches, HIGH);
//apagamos el rojo de los peatones y encendemos el verde
digitalWrite(led_rojo_peatones, LOW);
digitalWrite(led_verde_peatones, HIGH);
//esperamos los 5 segundos de este estado
delay(5000);
return;
}