#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD 20x4 dengan alamat I2C 0x27 (sesuaikan jika berbeda)
LiquidCrystal_I2C lcd(0x27, 20, 4);
// Lirik lagu dalam array of strings (dipecah sesuai 20 char per baris)
String lyrics[] = {
"For the rest of my l", // Baris 1 (dipotong untuk fit)
"ife", // Lanjutan baris 1
"I'll be with you", // Baris 2
"I'll stay by your sid", // Baris 3 (dipotong)
"e honest and true", // Lanjutan baris 3
"Till the end of my ti", // Baris 4 (dipotong)
"me", // Lanjutan baris 4
"ΓΙ be loving you. Iοv", // Baris 5 (dipotong; ada kesalahan ketik asli)
"ing you", // Lanjutan baris 5
"For the rest of my l", // Baris 6 (dipotong)
"ife", // Lanjutan baris 6
"Thru days and night", // Baris 7
"I'll thank Allah for ", // Baris 8 (dipotong)
"open my eyes", // Lanjutan baris 8
"Now and forever I I'", // Baris 9 (dipotong)
"ll be there for you" // Lanjutan baris 9
};
int numLines = sizeof(lyrics) / sizeof(lyrics[0]);
void setup() {
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan backlight
lcd.clear(); // Bersihkan layar
}
void loop() {
for (int i = 0; i < numLines; i++) {
// Tampilkan baris secara per huruf (efek diketik)
String currentLine = "";
for (char c : lyrics[i]) {
currentLine += c;
// Update LCD: tampilkan baris saat ini di posisi yang sesuai
if (i < 4) {
lcd.setCursor(0, i);
lcd.print(currentLine);
} else {
// Jika lebih dari 4 baris, scroll ke atas
lcd.scrollDisplayLeft(); // Scroll untuk membuat ruang
lcd.setCursor(0, 3); // Tulis di baris terakhir
lcd.print(currentLine);
}
delay(100); // Delay per karakter (sesuai kecepatan ketik)
}
delay(1000); // Delay antar baris (untuk ritme lagu; sesuaikan)
}
// Setelah semua baris, ulangi dari awal (loop forever)
delay(2000); // Jeda sebelum ulang
lcd.clear();
}