#include <LiquidCrystal_I2C.h>
#define I2C_DEVICE_ADDR 0x27
#define LCD_ROWS 4
#define LCD_COLS 20
LiquidCrystal_I2C lcd(I2C_DEVICE_ADDR, LCD_COLS, LCD_ROWS);
byte Heart[8] = {0b00000,0b01010,0b11111,0b11111,0b01110,0b00100,
0b00000,0b00000};
byte Bell[8] = {0b00100,0b01110,0b01110,0b01110,0b11111,0b00000,
0b00100,0b00000};
byte Alien[8] = {0b11111,0b10101,0b11111,0b11111,0b01110,0b01010,
0b11011,0b00000};
byte Check[8] = {0b00000,0b00001,0b00011,0b10110,0b11100,0b01000,
0b00000,0b00000};
byte Speaker[8] = {0b00001,0b00011,0b01111,0b01111,0b01111,0b00011,
0b00001,0b00000};
byte Sound[8] = {0b00001,0b00011,0b00101,0b01001,0b01001,0b01011,
0b11011,0b11000};
byte Skull[8] = {0b00000,0b01110,0b10101,0b11011,0b01110,0b01110,
0b00000,0b00000};
byte Lock[8] = {0b01110,0b10001,0b10001,0b11111,0b11011,0b11011,
0b11111,0b00000};
void setup() {
lcd.init();
lcd.clear();
lcd.backlight();
lcd.createChar(0, Heart);
lcd.createChar(1, Bell);
lcd.createChar(2, Alien);
lcd.createChar(3, Check);
lcd.createChar(4, Speaker);
lcd.createChar(5, Sound);
lcd.createChar(6, Skull);
lcd.createChar(7, Lock);
// Print a message on both lines of the LCD.
lcd.setCursor(2,0); //Set cursor to character 2 on line 0
lcd.print("Hello world!");
lcd.setCursor(2,1); //Move cursor to character 2 on line 1
lcd.print("LCD Tutorial");
lcd.blink();
delay(2000);
lcd.noBlink();
lcd.cursor();
delay(2000);
lcd.noCursor();
lcd.scrollDisplayRight();
delay(500);
lcd.scrollDisplayRight();
delay(500);
lcd.scrollDisplayLeft();
delay(500);
lcd.noDisplay();
delay(500);
lcd.display();
delay(2000);
lcd.clear();
lcd.print("Custom Character");
lcd.setCursor(0, 1);
lcd.write(0);
lcd.setCursor(2, 1);
lcd.write(1);
lcd.setCursor(4, 1);
lcd.write(2);
lcd.setCursor(6, 1);
lcd.write(3);
lcd.setCursor(8, 1);
lcd.write(4);
lcd.setCursor(10, 1);
lcd.write(5);
lcd.setCursor(12, 1);
lcd.write(6);
lcd.setCursor(14, 1);
lcd.write(7);
}
void loop() {
}