#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD 20x4 dengan alamat 0x27
LiquidCrystal_I2C lcd(0x27, 20, 4);
// Fungsi animasi teks per huruf
void animateText(const char* text, int row, int speed = 100, bool clearBefore = false) {
if (clearBefore) lcd.clear();
lcd.setCursor(0, row);
for (int i = 0; text[i] != '\0'; i++) {
lcd.print(text[i]);
delay(speed);
}
}
void setup() {
lcd.init();
lcd.backlight();
}
void loop() {
// === Lirik 1 ===
lcd.clear();
animateText("Ku merasakan apa", 0, 90, false);
lcd.setCursor(0, 1);
animateText("yang kau rasakan", 1, 90, false);
delay(3000);
// === Lirik 2 ===
lcd.clear();
animateText("Tanpa ragu ku bilang", 0, 70, false);
lcd.setCursor(0, 1);
animateText("kamu yang paling", 1, 70, false);
lcd.setCursor(0, 2);
animateText("paham aku", 2, 70, false);
delay(4000);
// === Lirik 3 ===
lcd.clear();
animateText("Dua jadi satu", 0, 90, false);
lcd.setCursor(0, 1);
animateText("belah hati aku", 1, 90, false);
delay(3500);
// === Lirik 4 ===
lcd.clear();
animateText("Aku mau maju", 0, 80, false);
lcd.setCursor(0, 1);
animateText("tapi tinggal tunggu", 1, 80, false);
lcd.setCursor(0, 2);
animateText("waktu", 2, 80, false);
delay(4000);
// selesai, ulang lagi
}