#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

// Bitmap senyum (27x1 pixel)
static const unsigned char PROGMEM image_Layer_3_bits[] = {
  0xff, 0xff, 0xff, 0xe0
};

void setup() {
  Serial.begin(115200);

  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("OLED tidak ditemukan"));
    while (true);
  }

  display.clearDisplay();
  display.display();
}

void loop() {
  // Tampilan 1: HALO - AKU MINBI
  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);
  display.setTextWrap(false);
  display.setCursor(50, 14);
  display.print("HALO ");
  display.setCursor(38, 35);
  display.print("AKU MINBI");
  display.display();
  delay(2000);

  // Tampilan 2: Gambar wajah dengan mata berkedip
  for (int i = 0; i < 3; i++) { // Berkedip 3 kali
    display.clearDisplay();

    // Mata terbuka
    display.fillCircle(77, 20, 6, SSD1306_WHITE); // Mata kanan
    display.fillCircle(51, 20, 6, SSD1306_WHITE); // Mata kiri
    display.drawBitmap(51, 38, image_Layer_3_bits, 27, 1, SSD1306_WHITE); // Senyum
    display.display();
    delay(300); // Mata terbuka

    // Mata tertutup (hapus dengan lingkaran hitam)
    display.fillCircle(77, 20, 6, SSD1306_BLACK); // Tutup mata kanan
    display.fillCircle(51, 20, 6, SSD1306_BLACK); // Tutup mata kiri
    display.drawBitmap(51, 38, image_Layer_3_bits, 27, 1, SSD1306_WHITE); // Tetap senyum
    display.display();
    delay(200); // Mata tertutup
  }

  delay(1000); // jeda setelah selesai kedip

  // Tampilan 3: HALLO - BUBUB?
  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);
  display.setTextWrap(false);
  display.setCursor(50, 15);
  display.print("HALLO");
  display.setCursor(44, 33);
  display.print("BUBUB ?");
  display.display();
  delay(2000);
}