#include <LiquidCrystal_I2C.h>
const int BTNS[] = {7, 8, 9, 10, 11, 12};
const char* STATE[] = {"LO", "HI"}; // Cambiado a const char* para ahorrar memoria
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
for (auto &p : BTNS) {
pinMode(p, INPUT_PULLUP);
}
lcd.init();
lcd.backlight();
}
String linea1 = "", linea2 = "";
void loop() {
String l1, l2; // Inicialización sin valor por defecto
for (auto &p : BTNS) {
String tmp = String(p) + '=' + STATE[digitalRead(p)];
String& linea = (p % 2 != 0) ? l1 : l2;
if (linea.length() > 0) {
linea += (tmp.length() % 2 == 0) ? " " : " ";
linea += tmp;
} else {
linea = tmp;
}
}
if (l1 != linea1) {
lcd.setCursor(0, 0);
lcd.print(l1);
linea1 = l1;
}
if (l2 != linea2) {
lcd.setCursor(0, 1);
lcd.print(l2);
linea2 = l2;
}
}