const int LED_PIN = 2;
const int BTN_PIN = 3;
const unsigned long blinkDuration = 5000; // Duración de parpadeo predeterminada en milisegundos (5 segundos)
int oldState = HIGH; // El estado inicial del botón es alto (debido a INPUT_PULLUP)
int counter = 0;
unsigned long lastButtonPressTime = 0; // Variable para almacenar el tiempo del último botón presionado
bool counting = false; // Variable para indicar si se está contando clics
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
pinMode(BTN_PIN, INPUT_PULLUP);
Serial.println("Button hasn't been pressed yet.");
}
void checkButton() {
int state = digitalRead(BTN_PIN);
if (state != oldState) { // Si el estado cambió
oldState = state; // Recordar el estado anterior
if (state == LOW) { // Si el botón está presionado
counter++;
lastButtonPressTime = millis(); // Guardar el tiempo del último botón presionado
counting = true; // Empezar a contar
Serial.print("Button has been pressed ");
Serial.print(counter);
Serial.println(" times.");
}
delay(20); // Debounce
}
}
void loop() {
checkButton();
// Si estamos contando y ha pasado el tiempo de duración del parpadeo
if (counting && millis() - lastButtonPressTime >= blinkDuration) {
counting = false; // Detener la cuenta
for (int i = 0; i < counter; i++) {
digitalWrite(LED_PIN, HIGH);
delay(200); // Encender el LED durante 200ms
digitalWrite(LED_PIN, LOW);
delay(200); // Apagar el LED durante 200ms
}
counter = 0; // Reiniciar el contador después de parpadear el LED
}
}