#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// Ukuran OLED
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
// Inisialisasi OLED (I2C default ESP32: SDA=21, SCL=22)
// Not musik (8x8 pixel)
static const unsigned char PROGMEM noteSymbol[] = {
0b00011000,
0b00011000,
0b00011000,
0b00011000,
0b11011000,
0b11111000,
0b01110000,
0b00100000
};
Adafruit_SSD1306 display(128, 64, &Wire, -1);
Adafruit_SSD1306 display2(128, 64, &Wire, -1);
const char carFrame1[] PROGMEM =
"Halstage Terimakasih \n"
" *\n"
" ______\n"
" __ _/[] []\\_\n"
" ( _ _ )\n"
" ==='O'==='O'===\n"
"~~~~~~~~~~~~~~~~~~~~";
const char carFrame2[] PROGMEM =
" *\n"
" \\ ______\n"
" \\__ _/[] []\\_\n"
" ( _ _ )\n"
" === o === o ===\n"
"~~~~~~~~~~~~~~~~~~~~";
void setup() {
// Mulai Serial (opsional)
Serial.begin(115200);
// Mulai OLED
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display2.begin(SSD1306_SWITCHCAPVCC, 0x3D);
display.clearDisplay();
display.setTextSize(1); // ukuran teks kecil
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display2.clearDisplay();
display2.setTextSize(1); // ukuran teks kecil
display2.setTextColor(SSD1306_WHITE);
display2.setCursor(0, 0);
// Lirik manual + delay
// Lirik pertama
display.clearDisplay();
display2.setCursor(0, 0);
display2.println(carFrame1);
display2.display();
display.setCursor(0, 20);
display.println("Kepadamu dulu");
display.display();
delay(1000);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Aku jatuh cinta..");
display.display();
delay(3200);
// Lirik kedua
display.clearDisplay();
display.setCursor(0, 20);
display.println("Menanam asa bisa ");
display.display();
delay(2000);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Bersama sepanjang usia");
display.display();
delay(4200);
// Lirik ketiga
display.clearDisplay();
display.setCursor(0, 20);
display.println("Saat itu engkau");
display.display();
delay(1900);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Ditepian Kota....");
display.display();
delay(2700);
// Lirik keempat
display.clearDisplay();
display.setCursor(0, 20);
display.println("Aku masih sendiri");
display.display();
delay(2300);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Kau sudah jadi miliknya....");
display.display();
delay(3600);
display.clearDisplay();
display.setCursor(0, 20);
display.drawBitmap(0, 0, noteSymbol, 8, 8, SSD1306_WHITE);
display.display();
delay(3500);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Terimakasih..");
display.display();
delay(2000);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Atas Segala Rasa..");
display.display();
delay(3200);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Pada Hari itu pun");
display.display();
delay(2000);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Aku turut Bahagia:>");
display.display();
delay(3200);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Karena Aku");
display.display();
delay(2500);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Selalu tahu...");
display.display();
delay(3000);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Menyukaimu");
display.display();
delay(1700);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Bukan berarti selalu...");
display.display();
delay(7000);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Memilikimu..");
display.display();
delay(3500);
}
void loop() {
}