// Declarar variables de los elementos
int pinLedVerde = 2;
int pinLedAmarillo = 16;
int pinLedRojo = 5;
int pinPulsador = 4;
int estadoLed = 0; // Variable para guardar el estado del LED (0: verde, 1: amarillo, 2: rojo)
bool pulsadorEstado = false; // Variable para guardar el estado actual del pulsador
bool pulsadorEstadoPrevio = false; // Variable para guardar el estado previo del pulsador
void setup() {
// Inicializar los pines de modo que los necesitamos
pinMode(pinLedVerde, OUTPUT);
pinMode(pinLedAmarillo, OUTPUT);
pinMode(pinLedRojo, OUTPUT);
pinMode(pinPulsador, INPUT);
// Inicializar todos los LEDs apagados
digitalWrite(pinLedVerde, LOW);
digitalWrite(pinLedAmarillo, LOW);
digitalWrite(pinLedRojo, LOW);
}
void loop() {
pulsadorEstado = digitalRead(pinPulsador); // Leer el estado del pulsador
// Detectar el flanco de subida (cuando el pulsador se presiona)
if (pulsadorEstado == HIGH && pulsadorEstadoPrevio == LOW) {
estadoLed = (estadoLed + 1) % 3; // Cambiar el estado del LED (0 -> 1 -> 2 -> 0)
// Actualizar los LEDs según el estado actual
if (estadoLed == 0) {
digitalWrite(pinLedVerde, HIGH);
digitalWrite(pinLedAmarillo, LOW);
digitalWrite(pinLedRojo, LOW);
} else if (estadoLed == 1) {
digitalWrite(pinLedVerde, LOW);
digitalWrite(pinLedAmarillo, HIGH);
digitalWrite(pinLedRojo, LOW);
} else if (estadoLed == 2) {
digitalWrite(pinLedVerde, LOW);
digitalWrite(pinLedAmarillo, LOW);
digitalWrite(pinLedRojo, HIGH);
}
}
pulsadorEstadoPrevio = pulsadorEstado; // Actualizar el estado previo del pulsador
delay(50); // Pequeño retraso para evitar rebotes del pulsador
}