#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Tahap animasi kotak hadiah (5x8 pixel)
byte giftBoxClosed[8] = {
B00100, // *
B01010, // * *
B00100, // *
B11111, // *****
B10101, // * * *
B11111, // *****
B10101, // * * *
B11111 // *****
};
byte giftBoxOpening1[8] = {
B00100, // *
B01010, // * *
B00100, // *
B00000, //
B11111, // *****
B10101, // * * *
B11111, // *****
B10101 // * * *
};
byte giftBoxOpening2[8] = {
B00100, // *
B01010, // * *
B00100, // *
B00000, //
B00000, //
B11111, // *****
B10101, // * * *
B11111 // *****
};
byte giftBoxOpen[8] = {
B00100, // *
B01010, // * *
B00100, // *
B00000, //
B00000, //
B00000, //
B11111, // *****
B10101 // * * *
};
void setup() {
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Aktifkan lampu latar
lcd.setCursor(0, 0);
lcd.print("Gift Animation");
}
void loop() {
// Tahap 1: Kotak tertutup
lcd.createChar(0, giftBoxClosed);
lcd.setCursor(0, 1);
lcd.write(byte(0));
delay(500);
// Tahap 2: Kotak mulai terbuka
lcd.createChar(1, giftBoxOpening1);
lcd.setCursor(0, 1);
lcd.write(byte(1));
delay(500);
// Tahap 3: Kotak setengah terbuka
lcd.createChar(2, giftBoxOpening2);
lcd.setCursor(0, 1);
lcd.write(byte(2));
delay(500);
// Tahap 4: Kotak terbuka penuh
lcd.createChar(3, giftBoxOpen);
lcd.setCursor(0, 1);
lcd.write(byte(3));
delay(500);
}