#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"
" / ### \\/ ### \\\n"
" /____________________________\\\n"
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
const char carFrame2[] PROGMEM =
" *\n"
" .-~~-. .-~~-. \n"
" / ^^ \\ / ^^ \\ \n"
" / #### \\ / #### \\ \n"
" / ## \\ / ## \\\n"
" / ### \\/ ### \\\n"
" /____________________________\\\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("Ku coba");
display.display();
delay(4000);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Merangkai kata cinta ");
display.display();
delay(4000);
// Lirik kedua
display.clearDisplay();
display.setCursor(0, 20);
display.println("Walaupun ku ");
display.display();
delay(3500);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Bukanlah pejangga yang bisa ");
display.display();
delay(4000);
// Lirik ketiga
display.clearDisplay();
display.setCursor(0, 20);
display.println("Tuliskan");
display.display();
delay(4000);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Kata-kata yang indah");
display.display();
delay(4000);
// Lirik keempat
display.clearDisplay();
display.setCursor(0, 20);
display.println("Nyatanya..");
display.display();
delay(4000);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Tak ada nyali untuk ungkapkan");
display.display();
delay(4000);
display.clearDisplay();
display.setCursor(0, 20);
display.drawBitmap(0, 0, noteSymbol, 8, 8, SSD1306_WHITE);
display.display();
delay(2500);
display.clearDisplay();
display.setCursor(0, 20);
display.println("I wanna love you");
display.display();
delay(3000);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Like the hurricane");
display.display();
delay(5000);
display.clearDisplay();
display.setCursor(0, 20);
display.println("I wanna love you");
display.display();
delay(3000);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Like a mountain rain");
display.display();
delay(5000);
display.clearDisplay();
display.setCursor(0, 20);
display.println("So wild so pure ");
display.display();
delay(4000);
display.clearDisplay();
display.setCursor(0, 20);
display.println("So strong..");
display.display();
delay(3000);
display.clearDisplay();
display.setCursor(0, 20);
display.println("And crazy for you");
display.display();
delay(4000);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Andai matamu");
display.display();
delay(3000);
display.clearDisplay();
display.setCursor(0, 20);
display.println("Melihat aku..");
display.display();
delay(4500);
display.clearDisplay();
display.setCursor(0,20);
display.println("Terungkap semua");
display.display();
delay(3000);
display.clearDisplay();
display.setCursor(0,20);
display.println("Isi hatiku..");
display.display();
delay(4500);
}
void loop() {
}