/* 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 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 incial: coches verde
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();
}
tac= 0;
tiempo = 250;
// encendemos el amarillo de los coches y el verde de los coches para indicar que empieza el cambio a rojo
digitalWrite(led_verde_coches, HIGH);
digitalWrite(led_amarillo_coches, HIGH);
digitalWrite(led_rojo_coches, LOW);
tic = millis();
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();
}
tac = 0;
//Cambio a rojo: encendemos el rojo de los coches y apagamos el amarillo de los coches
digitalWrite(led_verde_coches,LOW);
digitalWrite(led_amarillo_coches, LOW);
digitalWrite(led_rojo_coches, HIGH);
//Los peatones pueden cruzar: apagamos el rojo de los peatones y encendemos el verde
digitalWrite(led_rojo_peatones, LOW);
digitalWrite(led_verde_peatones, HIGH);
//esperamos los 5 segundos
delay(5000);
//Comienza el cambio a verde: encendemos el amarillo de coches
digitalWrite(led_amarillo_coches, HIGH);
digitalWrite(led_verde_peatones, LOW);
tic = millis();
tac = 0;
tiempo = 250;
while (tac-tic <=2000) // 2segundos 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();
}
tac = 0;
tiempo =250;
return;
}