#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Arduino.h>
#define SCREEN_WIDTH 128 // Lebar layar OLED
#define SCREEN_HEIGHT 64 // Tinggi layar OLED
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int smileyIndex = 0; // Indeks emoticon yang akan ditampilkan
// Gambar 3 emoticon smiley dalam bentuk bitmap
const unsigned char smiley1[] PROGMEM = {
0x00, 0x00, 0x00, 0x3C, 0x42, 0xA5, 0x81, 0x81, 0x81, 0xA5, 0x81, 0x81, 0x81, 0x42, 0x3C, 0x00
};
const unsigned char smiley2[] PROGMEM = {
0x00, 0x00, 0x00, 0x3C, 0x42, 0xA1, 0x81, 0x91, 0x85, 0xA5, 0x81, 0x81, 0x81, 0x42, 0x3C, 0x00
};
const unsigned char smiley3[] PROGMEM = {
0x00, 0x00, 0x00, 0x3C, 0x42, 0xA5, 0x85, 0x95, 0x81, 0xA5, 0x81, 0x81, 0x81, 0x42, 0x3C, 0x00
};
// Fungsi untuk menampilkan emoticon
void displaySmiley(int index) {
display.clearDisplay(); // Bersihkan layar
switch(index) {
case 0:
display.drawBitmap(56, 16, smiley1, 16, 16, WHITE); // Gambar smiley 1
break;
case 1:
display.drawBitmap(56, 16, smiley2, 16, 16, WHITE); // Gambar smiley 2
break;
case 2:
display.drawBitmap(56, 16, smiley3, 16, 16, WHITE); // Gambar smiley 3
break;
}
display.display(); // Tampilkan di layar
}
void setup() {
// Inisialisasi OLED
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.display();
delay(2000); // Tampilkan layar awal selama 2 detik
display.clearDisplay();
}
void loop() {
// Pilih smiley secara acak
smileyIndex = random(0, 3);
// Tampilkan smiley
displaySmiley(smileyIndex);
// Tunggu 5 detik sebelum mengganti smiley
delay(5000);
}