#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define LCD_ADDR 0x27 // ubah ke 0x3F jika teks tidak muncul
LiquidCrystal_I2C lcd(LCD_ADDR, 16, 2);
// ==== LIRIK REFF ====
String lines[][2] = {
{"Andai ku bisa", "lebih lama bersamamu"}, // 3.5 detik
{"Sebisa diriku", "segalanya kulakukan"}, // 3.5 detik
{"Asalkan aku", "tetap bersamanya"}, // 3.5 detik
{"Bisakah aku", "lanjutkan hidup ini"}, // 3.5 detik
{"Tanpa senyummu", "bisakah ku bahagia"}, // 3.5 detik
{"Tanpa hadirmu", "ku tak mampu"} // 4.0 detik
};
// ==== DURASI (ms) ====
int delays[] = {3500, 3500, 3500, 3500, 3500, 4000};
const int N = sizeof(lines) / sizeof(lines[0]);
// ==== FUNGSI TAMPIL ====
void tampilkan(int i) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(lines[i][0].substring(0, 16)); // baris atas
lcd.setCursor(0, 1);
lcd.print(lines[i][1].substring(0, 16)); // baris bawah
delay(delays[i]);
}
// ==== SETUP ====
void setup() {
Wire.begin();
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Bisakah");
lcd.setCursor(0, 1);
lcd.print("by Fabio Asher");
delay(2500);
lcd.clear();
}
// ==== LOOP ====
void loop() {
for (int i = 0; i < N; i++) {
tampilkan(i);
}
delay(4000); // jeda sebelum ulang dari awal
}