#include <Wire.h> //เรียกใช้ไลบรารี Wire.h สําหรับ LCD I2C
#include <LiquidCrystal_I2C.h> //เรียกใช้ไลบรารี LiquidCrystal.h สําหรับ LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); //กําหนดขาสัญญาณของ Arduino ที่จะต่อกับ LCD
byte HEART[] = {B00000, B01010, B11111, B11111, B01110, B00100, B00000, B00000};
byte BELL[] = {B00100, B01110, B01110, B01110, B11111, B00000, B00100, B00000};
byte SPEAKER[] = {B00001, B00011, B01111, B01111, B01111, B00011, B00001, B00000};
byte LOCK[] = {B01110, B10001, B10001, B11111, B11011, B11011, B11111, B00000};
byte UNLOCK[] = {B01110, B10000, B10000, B11111, B11011, B11011, B11111, B00000};
byte SMILE[] = {B00000, B01010, B00000, B00000, B10001, B01110, B00000, B00000};
//byte HOURGLASS[] = {B01010, B00100, B00100, B01010, B10001, B00100, B10001, B00000};
byte FLAG[] = {B11111, B11101, B11011, B11101, B11111, B10000, B10000, B10000};
//design set1 custom character
byte BUNNY[] = {B00000, B01010, B01010, B01110, B10001, B11011, B10001, B01110};
byte HOURGLASS2[] = {B00000, B11111, B10001, B01010, B00100, B01010, B10001, B11111};
byte CROSS[] = {B10001, B11011, B01110, B00100, B00100, B01110, B11011, B10001};
byte CHECK[] = {B00001, B00001, B00011, B00010, B10010, B11110, B01100, B00100};
byte STAR[] = {B00000, B00100, B00100, B01010, B10001, B01010, B00100, B00100};
byte WATER[] = {B00100, B00100, B01110, B01110, B11111, B11111, B11110, B01110};
byte BOX[] = {B11111, B10001, B10001, B10001, B10001, B10001, B10001, B11111};
byte BOX2[] = {B00000, B01110, B01110, B01110, B01110, B01110, B01110, B00000};
void setup() {
//lcd display
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.begin(16, 2); //กําหนดเชื่อมต่อจอ 16 ตัวอักษร 2 แถว
lcd.createChar(0, BUNNY); //ตัวแปร 0 สร้างอักษรลําดับที่ 1 โดยมีHEART เป็นตัวอย่าง
lcd.createChar(1, CROSS); //ตัวแปร 1 สร้างอักษรลําดับที่ 2 โดยมีBELL เป็นตัวอย่าง
lcd.createChar(2, CHECK); //ตัวแปร 2 สร้างอักษรลําดับที่ 3 โดยมีSPEAKER เป็นตัวอย่าง
lcd.createChar(3, STAR); //ตัวแปร 3 สร้างอักษรลําดับที่ 4 โดยมีLOCK เป็นตัวอย่าง
lcd.createChar(4, WATER); //ตัวแปร 4 สร้างอักษรลําดับที่ 5 โดยมีUNLOCK เป็นตัวอย่าง
lcd.createChar(5, BOX); //ตัวแปร 5 สร้างอักษรลําดับที่ 6 โดยมีSMILE เป็นตัวอย่าง
lcd.createChar(6, HOURGLASS2); //ตัวแปร 6 สร้างอักษรลําดับที่ 7 โดยมีHOURGLASS เป็นตัวอย่าง
lcd.createChar(7, BOX2); //ตัวแปร 7 สร้างอักษรลําดับที่ 8 โดยมีFLAG เป็นตัวอย่าง
}
void loop() {
lcd.setCursor(0, 0); //กําหนดตําแหน่งการสร้างตัวอักษร โดยสร้างให้อยู่ในคอร์ลัมที่ 1 แถวที่ 1 (0 = 1)
lcd.write(byte(0)); //สร้างตัวอักษรขึ้นมาโดยใช้อักษรจาก customChar(ตามที่กําหนดในโค๊ด [lcd.createChar(0, HEART);] ดังนั้น 0 จึงเท่ากับ HEART)
delay(1000);
lcd.setCursor(2, 0); //กําหนดตําแหน่งการสร้างตัวอักษร โดยสร้างให้อยู่ในคอร์ลัมที่ 3 แถวที่1 (0 = 1)
lcd.write(byte(1)); //สร้างตัวอักษรขึ้นมาโดยใช้อักษรจาก customChar(ตามที่กําหนดในโค๊ด [lcd.createChar(1, BELL);] ดังนั้น 1 จึงเท่ากับ BELL)
delay(1000);
lcd.setCursor(4, 0);
lcd.write(byte(2));
delay(1000);
lcd.setCursor(6, 0);
lcd.write(byte(3));
delay(1000);
lcd.setCursor(8, 0);
lcd.write(byte(4));
delay(1000);
lcd.setCursor(0, 1);
lcd.write(byte(5));
delay(1000);
lcd.setCursor(2, 1);
lcd.write(byte(6));
delay(1000);
lcd.setCursor(4, 1);
lcd.write(byte(7));
delay(1000);
lcd.clear();
delay(2000);
}