#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
// --- วาดรูปหัวใจ ---
byte heart[8] = {
0b00000,
0b01010,
0b11111,
0b11111,
0b11111,
0b01110,
0b00100,
0b00000
};
// --- วาดรูปคนเดินท่าที่ 1 ---
byte man1[8] = {
0b00100, 0b01110, 0b00100, 0b01110, 0b10101, 0b00100, 0b01010, 0b11011
};
// --- วาดรูปคนเดินท่าที่ 2 ---
byte man2[8] = {
0b00100, 0b01110, 0b00100, 0b00100, 0b01110, 0b00100, 0b01010, 0b01010
};
void setup() {
lcd.init();
lcd.backlight();
// ลงทะเบียนตัวละคร
lcd.createChar(0, heart);
lcd.createChar(1, man1);
lcd.createChar(2, man2);
// แสดงข้อความเริ่มต้น
lcd.setCursor(0, 0);
lcd.print("PANGPOND");
lcd.setCursor(9, 0);
lcd.write(0); // แสดงหัวใจตรงกลาง
lcd.setCursor(11, 0);
lcd.print("FAIR");
}
void loop() {
// ให้คนเดินจากซ้ายไปขวาที่บรรทัดล่าง
for (int i = 0; i < 16; i++) {
// กะพริบหัวใจทุกครั้งที่คนก้าวเดิน (เพื่อความมุ้งมิ้ง)
lcd.setCursor(9, 0);
lcd.write(0);
// คนท่าที่ 1
lcd.setCursor(i, 1);
lcd.write(1);
delay(200);
lcd.setCursor(i, 1);
lcd.print(" ");
// หัวใจกะพริบหายไปแวบนึง
lcd.setCursor(9, 0);
lcd.print(" ");
// คนท่าที่ 2 (ก้าวต่อไป)
if (i < 15) {
lcd.setCursor(i + 1, 1);
lcd.write(2);
delay(200);
lcd.setCursor(i + 1, 1);
lcd.print(" ");
}
}
}