#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Bounce2.h> // Agrega la biblioteca Bounce2
LiquidCrystal_I2C lcd(0x27, 16, 2);
Bounce debouncer[4]; // Declaración de objetos Bounce para los pulsadores
bool states[4] = {false, false, false, false}; // Estados iniciales de las variables
void setup() {
lcd.init();
lcd.backlight();
// Inicializa los objetos Bounce para cada pulsador
for (int i = 0; i < 4; i++) {
debouncer[i].attach(2 + i, INPUT_PULLUP); // Pines 2, 3, 4 y 5
debouncer[i].interval(50); // Intervalo de eliminación de rebotes en milisegundos
}
lcd.setCursor(0, 0);
lcd.print("PRUEBA");
updateVariables();
}
void loop() {
// Actualiza los objetos Bounce
for (int i = 0; i < 4; i++) {
debouncer[i].update();
}
// Leer el estado de los botones actualizados y actualizar las variables
for (int i = 0; i < 4; i++) {
states[i] = debouncer[i].read() == HIGH;
}
// Actualizar la pantalla con los nuevos estados
updateVariables();
}
void updateVariables() {
lcd.setCursor(0, 1);
lcd.print("1=");
lcd.print(states[0] ? "0" : "1");
lcd.print(" 2=");
lcd.print(states[1] ? "0" : "1");
lcd.print(" 3=");
lcd.print(states[2] ? "0" : "1");
lcd.print(" 4=");
lcd.print(states[3] ? "0" : "1");
}