#include <Wire.h> // Librería para comunicación I2C
#include <LiquidCrystal_I2C.h> // Librería para LCD I2C
int cont = 0;
bool estado_anterior = HIGH; // Variable para el estado anterior del botón
LiquidCrystal_I2C lcd(0x27, 16, 2); // Dirección I2C del LCD (0x27 es común, ajusta si es diferente)
void setup() {
pinMode(2, INPUT_PULLUP); // Configuración del botón con resistencia de pull-up
pinMode(13, OUTPUT); // Configuración del LED en el pin 13
lcd.begin(16, 2); // Iniciar la pantalla LCD con 16 columnas y 2 filas
lcd.backlight(); // Encender la luz de fondo de la LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Contador:"); // Mostrar "Contador:" en la primera línea
}
void loop() {
bool estado_actual = digitalRead(2); // Leer el estado actual del botón
// Detectar solo el cambio de estado del botón (de HIGH a LOW)
if (estado_anterior == HIGH && estado_actual == LOW) {
cont++; // Incrementar el contador solo en el momento de la pulsación
// Cambiar el estado del LED dependiendo del valor del contador
if (cont == 1) {
digitalWrite(13, HIGH); // Encender el LED
}
else if (cont == 2) {
digitalWrite(13, LOW); // Apagar el LED
}
else if (cont >= 3) {
cont = 0; // Reiniciar el contador a 0
}
// Mostrar el valor del contador en la pantalla LCD
lcd.setCursor(0, 1); // Mover el cursor a la segunda línea
lcd.print("Valor: "); // Escribir "Valor:"
lcd.print(cont); // Escribir el valor del contador
lcd.print(" "); // Espacios para borrar caracteres sobrantes
}
estado_anterior = estado_actual; // Actualizar el estado anterior del botón
delay(50); // Pequeño retraso para evitar rebotes del botón
}