/*
Tomado de: https://docs.arduino.cc/built-in-examples/digital/Debounce
*/
// Entradas - Salidas (pines)
const int buttonPin = 2;
const int ledPin = 4;
// Variables will change:
int ledState = HIGH;
int buttonState; // Estado actual del boton
int lastButtonState = LOW; // Estado anterior del boton
long lastDebounceTime = 0; // Ultima vez que el boton fue presionado
long debounceDelay = 50; // Ventana de tiempo para el debounce
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
// Lectura inicial del boton
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
// reset the debouncing timer
lastDebounceTime = millis();
}
// Se verifica que el tiempo entre pulsaciones sea mayor que el delay
if ((millis() - lastDebounceTime) > debounceDelay) {
// Se actualiza el valor del estado actual
buttonState = reading;
}
// Actualizacion del valor
digitalWrite(ledPin, buttonState);
// Actualizacion del estado
lastButtonState = reading;
}