#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);
// Array string untuk teks yang akan digulir
const char* teks[] = {
"Hello, Arduino!",
"Selamat Datang!",
"Belajar OLED",
"Teks Berganti"
};
int jumlahTeks = sizeof(teks) / sizeof(teks[0]);
int indeksTeks = 0; // Indeks untuk melacak teks saat ini
// Pin untuk tombol
const int pinTombolKiri = 2;
const int pinTombolKanan = 3;
void setup() {
Serial.begin(9600);
if (!display.begin(SSD1306_PAGEADDR, 0x3C)) {
Serial.println(F("Gagal menginisialisasi OLED"));
while (true);
}
display.clearDisplay();
display.display();
// Inisialisasi pin tombol
pinMode(pinTombolKiri, INPUT_PULLUP); // Menggunakan internal pull-up
pinMode(pinTombolKanan, INPUT_PULLUP); // Menggunakan internal pull-up
tampilkanTeks();
}
void loop() {
// Cek apakah tombol kiri ditekan
if (digitalRead(pinTombolKiri) == LOW) {
indeksTeks--;
if (indeksTeks < 0) {
indeksTeks = jumlahTeks - 1; // Kembali ke teks terakhir
}
tampilkanTeks();
delay(200); // Debouncing delay
}
// Cek apakah tombol kanan ditekan
if (digitalRead(pinTombolKanan) == LOW) {
indeksTeks++;
if (indeksTeks >= jumlahTeks) {
indeksTeks = 0; // Kembali ke teks pertama
}
tampilkanTeks();
delay(200); // Debouncing delay
}
}
void tampilkanTeks() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 10);
display.println(teks[indeksTeks]);
display.display();
}