const int ledr = 21; // GPIO del led rojo
const int leda = 5; // GPIO del led amarillo
const int ledv = 4; // GPIO del led verde
const int boton = 12; // GPIO del botón
void setup()
{
// Definimos que son salidas
pinMode(ledr, OUTPUT);
pinMode(leda, OUTPUT);
pinMode(ledv, OUTPUT);
pinMode(boton, INPUT_PULLUP); // Usamos INPUT_PULLUP para activar la resistencia interna
Serial.begin(115200);
delay(1000);
Serial.println("Simulador de un Semaforo");
}
void loop()
{
// Verificamos si se ha presionado el botón
if (digitalRead(boton) == LOW) {
// Inicia en verde el semáforo durante 5 segundos
Serial.println("Semáforo en verde, avance");
digitalWrite(ledr, LOW);
digitalWrite(leda, LOW);
digitalWrite(ledv, HIGH);
delay(5000);
// Pone a parpadear 6 veces el semáforo con la luz amarilla
Serial.println("Semáforo en amarillo, reduzca su velocidad");
for (int i = 0; i < 6; i++) {
digitalWrite(ledr, LOW);
digitalWrite(leda, HIGH);
digitalWrite(ledv, LOW);
delay(500);
digitalWrite(ledr, LOW);
digitalWrite(leda, LOW);
digitalWrite(ledv, LOW);
delay(500);
}
// Pone en rojo el semáforo por 5 segundos
Serial.println("Semáforo en rojo, frene");
digitalWrite(ledr, HIGH);
digitalWrite(leda, LOW);
digitalWrite(ledv, LOW);
delay(5000);
// Apaga la luz roja antes de reiniciar
digitalWrite(ledr, LOW);
}
}