#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
byte smileyFace[8] = {
0b00000,
0b01010,
0b01010,
0b00000,
0b10001,
0b01110,
0b00000,
0b00000
};
byte sadFace[8] = {
0b00000,
0b01010,
0b01010,
0b00000,
0b01110,
0b10001,
0b00000,
0b00000
};
byte heart[8] = {
0b00000,
0b01010,
0b11111,
0b11111,
0b01110,
0b00100,
0b00000,
0b00000
};
byte star[8] = {
0b00100,
0b11111,
0b01110,
0b11111,
0b00100,
0b00000,
0b00000,
0b00000
};
int smileyX = 0, smileyY = 0;
int sadX = 15, sadY = 0;
int heartX = 0, heartY = 1;
int starX = 15, starY = 1;
int smileyDirX = 1, smileyDirY = 1;
int sadDirX = -1, sadDirY = 1;
int heartDirX = 1, heartDirY = -1;
int starDirX = -1, starDirY = -1;
void setup() {
lcd.init();
lcd.backlight();
lcd.createChar(0, smileyFace);
lcd.createChar(1, sadFace);
lcd.createChar(2, heart);
lcd.createChar(3, star);
lcd.clear();
}
void loop() {
lcd.setCursor(smileyX, smileyY);
lcd.print(" ");
lcd.setCursor(sadX, sadY);
lcd.print(" ");
lcd.setCursor(heartX, heartY);
lcd.print(" ");
lcd.setCursor(starX, starY);
lcd.print(" ");
smileyX += smileyDirX;
smileyY += smileyDirY;
sadX += sadDirX;
sadY += sadDirY;
heartX += heartDirX;
heartY += heartDirY;
starX += starDirX;
starY += starDirY;
if (smileyX < 0 || smileyX > 15) smileyDirX = -smileyDirX;
if (smileyY < 0 || smileyY > 1) smileyDirY = -smileyDirY;
if (sadX < 0 || sadX > 15) sadDirX = -sadDirX;
if (sadY < 0 || sadY > 1) sadDirY = -sadDirY;
if (heartX < 0 || heartX > 15) heartDirX = -heartDirX;
if (heartY < 0 || heartY > 1) heartDirY = -heartDirY;
if (starX < 0 || starX > 15) starDirX = -starDirX;
if (starY < 0 || starY > 1) starDirY = -starDirY;
lcd.setCursor(smileyX, smileyY);
lcd.write(byte(0));
lcd.setCursor(sadX, sadY);
lcd.write(byte(1));
lcd.setCursor(heartX, heartY);
lcd.write(byte(2));
lcd.setCursor(starX, starY);
lcd.write(byte(3)); // ดาว
delay(200);
}LAB XII-II
LCD 20x4