#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // 0x27 es la dirección I2C más común, ajusta si es necesario
int x = -3;
byte chr[2][8][8] = {
{
{0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x0E},
{0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x1F, 0x1F},
{0x00, 0x00, 0x00, 0x03, 0x07, 0x1F, 0x1F, 0x1F},
{0x00, 0x00, 0x05, 0x1F, 0x1D, 0x1F, 0x16, 0x06},
{0x0C, 0x18, 0x10, 0x00, 0x01, 0x01, 0x01, 0x00},
{0x1F, 0x1F, 0x1E, 0x17, 0x00, 0x00, 0x10, 0x00},
{0x1F, 0x1F, 0x03, 0x02, 0x14, 0x04, 0x02, 0x00},
{0x1C, 0x1C, 0x04, 0x04, 0x08, 0x00, 0x00, 0x00}
},
{
{0x00, 0x00, 0x00, 0x07, 0x0F, 0x0E, 0x1C, 0x18},
{0x00, 0x00, 0x00, 0x0F, 0x1F, 0x1F, 0x1F, 0x1F},
{0x00, 0x00, 0x01, 0x03, 0x1F, 0x1F, 0x1F, 0x1F},
{0x14, 0x1C, 0x1A, 0x1E, 0x1F, 0x13, 0x10, 0x10},
{0x13, 0x13, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00},
{0x1F, 0x07, 0x0E, 0x06, 0x01, 0x00, 0x00, 0x00},
{0x0F, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00},
{0x10, 0x18, 0x0C, 0x02, 0x02, 0x11, 0x00, 0x00}
}
};
void setup() {
Wire.begin();
lcd.init();
lcd.backlight();
}
void loop() {
for (int f = 0; f < 2; f++) {
lcd.clear();
for (int i=0; i<8; i++) {
lcd.createChar(i, chr[f][i]);
}
for (int c = 0; c < 4; c++) {
int xc = x + c;
if ((xc >= 0) && (xc < 16)) {
lcd.setCursor(xc, 0); lcd.write(byte(c));
lcd.setCursor(xc, 1); lcd.write(byte(c + 4));
}
}
x++; // Incrementa x para mover el caballo
if (x > 15) { // Reinicia x para que el caballo vuelva a aparecer
x = -3;
}
delay(400);
}
}