#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD I2C (alamat default 0x27, ukuran 16x2)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Custom karakter hati
byte love[8] = {
0b00000,
0b01010,
0b11111,
0b11111,
0b11111,
0b01110,
0b00100,
0b00000
};
// Fungsi untuk menampilkan teks dengan animasi typewriter
void typewriter(String text, int row, int delayTime) {
for (int i = 0; i < text.length(); i++) {
lcd.setCursor((16 - text.length()) / 2 + i, row); // Tengah
lcd.print(text[i]);
delay(delayTime);
}
}
// Fungsi untuk menghapus teks satu per satu (kebalikan typewriter)
void deleteText(String text, int row, int delayTime) {
for (int i = text.length() - 1; i >= 0; i--) {
lcd.setCursor((16 - text.length()) / 2 + i, row); // Tengah
lcd.print(" ");
delay(delayTime);
}
}
// Fungsi untuk animasi teks "Hallo Keii" dan "From Rev"
void keii() {
lcd.clear();
typewriter("Hallo Keii", 0, 250); // Baris atas
typewriter("From Rev", 1, 250); // Baris bawah
delay(2000); // Tunggu beberapa saat setelah selesai animasi
deleteText("Hallo Keii", 0, 250); // Baris atas
deleteText("From Rev", 1, 250); // Baris bawah
delay(1000); // Tunggu sebelum fungsi berikutnya
}
// Fungsi untuk animasi "butterfly"
void butterfly() {
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("Subscribe");
lcd.setCursor(0, 1);
lcd.print("TeachMeSomething");
delay(2000);
lcd.clear();
// Animasi frame butterfly
image00();
delay(250);
image01();
delay(250);
image02();
delay(250);
image03();
delay(700);
image04();
delay(250);
image05();
delay(250);
image06();
delay(700);
image07();
delay(1250);
}
// Frame animasi butterfly
void image00() {
lcd.clear();
byte image22[8] = {B00110, B01101, B11011, B10011, B00111, B01111, B01111, B11111};
byte image23[8] = {B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000};
byte image07[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111};
byte image08[8] = {B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000};
byte image09[8] = {B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100};
lcd.createChar(0, image22);
lcd.createChar(1, image23);
lcd.createChar(2, image07);
lcd.createChar(3, image08);
lcd.createChar(4, image09);
lcd.setCursor(5, 1);
lcd.write(byte(0));
lcd.setCursor(6, 1);
lcd.write(byte(1));
lcd.setCursor(6, 0);
lcd.write(byte(2));
lcd.setCursor(7, 0);
lcd.write(byte(3));
lcd.setCursor(8, 0);
lcd.write(byte(4));
}
// Tambahkan fungsi `image01`, `image02`, ..., `image07` seperti pada kode asli
void setup() {
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Aktifkan lampu latar
lcd.clear(); // Bersihkan layar
lcd.createChar(0, love); // Simpan karakter hati di slot 0
}
void loop() {
keii(); // Jalankan animasi "keii"
butterfly(); // Jalankan animasi "butterfly"
}