#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);
int eyeOffset = 0;
int eyeDirection = 1; // 1: ke kanan, -1: ke kiri
int maxOffset = 5;
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Alamat default
display.clearDisplay();
display.display();
}
void loop() {
display.clearDisplay();
// Mata kiri dan kanan (bergerak horizontal)
display.fillCircle(40 + eyeOffset, 20, 5, SSD1306_WHITE);
display.fillCircle(88 + eyeOffset, 20, 5, SSD1306_WHITE);
// Mulut senyum (setengah lingkaran)
display.drawCircle(64, 45, 12, SSD1306_WHITE);
display.fillRect(52, 33, 25, 12, SSD1306_BLACK); // potong atas → jadi senyum
display.display();
delay(150); // Delay antar frame
// Update posisi mata
eyeOffset += eyeDirection;
if (eyeOffset >= maxOffset || eyeOffset <= -maxOffset) {
eyeDirection *= -1; // Balik arah
}
}