// Definir el pin del LED rojo
const int pinLedRojo = 13;
// Definir el pin del LED verde
const int pinLedVerde = 12;
// Definir el pin del botón
const int pinBoton = 2;
// Variable para almacenar el estado del botón
int estadoBoton;
// Variable para almacenar el número de pulsaciones del botón
int contadorPulsaciones = 0;
// Variable para almacenar el tiempo de la última pulsación
unsigned long tiempoUltimaPulsacion = 0;
// Definir el tiempo de espera para considerar una pulsación doble (en milisegundos)
const unsigned long intervaloDoblePulsacion = 500;
void setup() {
// Configurar el pin del LED rojo como salida
pinMode(pinLedRojo, OUTPUT);
// Configurar el pin del LED verde como salida
pinMode(pinLedVerde, OUTPUT);
// Configurar el pin del botón como entrada con pull-up
pinMode(pinBoton, INPUT_PULLUP);
// Inicializar los LEDs apagados
digitalWrite(pinLedRojo, LOW);
digitalWrite(pinLedVerde, LOW);
}
void loop() {
// Leer el estado del botón
estadoBoton = digitalRead(pinBoton);
// Si el botón está presionado (LOW)
if (estadoBoton == LOW) {
// Esperar un poco para el rebote del botón
delay(50);
// Verificar si el botón sigue presionado
if (digitalRead(pinBoton) == LOW) {
// Encender el LED rojo
digitalWrite(pinLedRojo, HIGH);
// Incrementar el contador de pulsaciones
contadorPulsaciones++;
// Almacenar el tiempo de la pulsación
tiempoUltimaPulsacion = millis();
// Esperar a que el botón sea liberado
while (digitalRead(pinBoton) == LOW) {
// Esperar
}
// Esperar un poco para el rebote del botón
delay(50);
}
}
// Apagar el LED rojo cuando el botón no está presionado
digitalWrite(pinLedRojo, LOW);
// Si han pasado menos de intervaloDoblePulsacion milisegundos desde la última pulsación
if (millis() - tiempoUltimaPulsacion < intervaloDoblePulsacion) {
// Verificar si se ha presionado el botón dos veces
if (contadorPulsaciones >= 2) {
// Encender el LED verde
digitalWrite(pinLedVerde, HIGH);
}
} else {
// Si ha pasado más tiempo, reiniciar el contador de pulsaciones
contadorPulsaciones = 0;
// Apagar el LED verde
digitalWrite(pinLedVerde, LOW);
}
}