#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD 20x4 dengan alamat 0x27
LiquidCrystal_I2C lcd(0x27, 20, 4);
const int ledPin = 13; // pin LED (bisa pakai LED built-in)
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]);
// LED berkedip setiap huruf
digitalWrite(ledPin, HIGH);
delay(speed / 2);
digitalWrite(ledPin, LOW);
delay(speed / 2);
}
}
void setup() {
lcd.init();
lcd.backlight();
pinMode(ledPin, OUTPUT);
}
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(1500);
// === 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(2000);
// === Lirik 3 ===
lcd.clear();
animateText("Dua jadi satu", 0, 90, false);
lcd.setCursor(0, 1);
animateText("belah hati aku", 1, 90, false);
delay(2000);
// === 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(3000);
// Ulangi lagu
}