#include <LiquidCrystal_I2C.h>
#define LCD_I2C_ADDR (0x27)
#define LCD_COLUMNS 20
#define LCD_LINES 4
LiquidCrystal_I2C lcd(LCD_I2C_ADDR, LCD_COLUMNS, LCD_LINES);
byte bStand[8] = {B01110, B01110, B00100, B10101, B01110, B00100, B01110, B10001};
byte bCenter[8] = {B01110, B01110, B00100, B00100, B11111, B00100, B01110, B10001};
byte bUp[8] = {B01110, B01110, B00100, B00100, B01110, B10101, B01110, B10001};
byte bLocked[8] = {B00000, B01110, B10001, B10001, B11111, B11011, B11011, B11111};
byte bStartUnlock[8] = {B01110, B10001, B10001, B10001, B11111, B11011, B11011, B11111};
byte bUnlocked[8] = {B01110, B10001, B10000, B10000, B11111, B11011, B11011, B11111};
int frame = 0;
void setup() {
lcd.init();
lcd.backlight();
lcd.createChar(0, bStand);
lcd.createChar(1, bCenter);
lcd.createChar(2, bUp);
lcd.createChar(3, bLocked);
lcd.createChar(4, bStartUnlock);
lcd.createChar(5, bUnlocked);
lcd.setCursor(0, 0);
lcd.print("Animation");
}
void loop() {
switch (frame) {
case 0:
lcd.setCursor(0, 1);
lcd.write(0);
lcd.setCursor(1, 1);
lcd.write(3);
break;
case 1:
lcd.setCursor(0, 1);
lcd.write(1);
lcd.setCursor(1, 1);
lcd.write(4);
break;
case 2:
lcd.setCursor(0, 1);
lcd.write(2);
lcd.setCursor(1, 1);
lcd.write(5);
break;
default:
break;
}
if (frame == 2) {
frame = -1;
}
frame++;
delay(250);
}