#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Definir los pines I2C en el ESP32
#define I2C_SDA 21
#define I2C_SCL 22
// Crear el objeto LCD con la dirección I2C, 16 columnas y 2 filas
LiquidCrystal_I2C lcd(0x27, 16, 2);
int pulsador1 = 15;
int pulsador2 = 2;
int LEDr = 4;
int LEDv = 16;
int estado1;
int estado2;
void setup() {
// Inicializar el bus I2C con los pines SDA y SCL
Wire.begin(I2C_SDA, I2C_SCL);
// Configurar los pines
pinMode(LEDr, OUTPUT);
pinMode(LEDv, OUTPUT);
pinMode(pulsador1, INPUT);
pinMode(pulsador2, INPUT);
// Inicializar el LCD
lcd.begin(16, 2);
lcd.backlight(); // Encender la luz de fondo
lcd.clear(); // Limpiar la pantalla
// Mensaje inicial en la pantalla LCD
lcd.setCursor(0, 0); // Colocar el cursor en la primera fila, primera columna
lcd.print("Sistema listo");
}
void loop() {
// Leer el estado de los pulsadores
estado1 = digitalRead(pulsador1);
estado2 = digitalRead(pulsador2);
// Limpiar la pantalla solo cuando sea necesario
if (estado1 == LOW) { // Pulsador 1 presionado
digitalWrite(LEDv, HIGH);
digitalWrite(LEDr, LOW);
lcd.setCursor(0, 0);
lcd.print("LED verde encendido");
} else if (estado2 == LOW) { // Pulsador 2 presionado
digitalWrite(LEDv, LOW);
digitalWrite(LEDr, HIGH);
lcd.setCursor(0, 0);
lcd.print("LED rojo encendido");
} else {
digitalWrite(LEDv, LOW);
digitalWrite(LEDr, LOW);
lcd.setCursor(0, 0);
lcd.print(" "); // Espacio en blanco
}
delay(100); // Pequeño retraso para evitar rebotes
}