#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <SD.h>
#define OLED_RESET -1
Adafruit_SSD1306 display(OLED_RESET);
#define BUTTON_PIN 4 // Pin untuk tombol
#define SD_CS_PIN 5 // Pin untuk CS kartu microSD
File root;
String currentFileName = "";
bool isFileSelected = false;
void setup() {
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT);
attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), selectFile, FALLING);
if (!display.begin(SSD1306_I2C_ADDRESS, OLED_RESET)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
if (!SD.begin(SD_CS_PIN)) {
Serial.println(F("Card Mount Failed"));
return;
}
display.display();
delay(2000);
display.clearDisplay();
root = SD.open("/");
}
void loop() {
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
if (isFileSelected) {
display.clearDisplay();
display.setCursor(0, 0);
display.print(F("Reading file: "));
display.println(currentFileName);
File file = SD.open(currentFileName);
if (file) {
while (file.available()) {
String line = file.readStringUntil('\n');
display.println(line);
}
file.close();
}
isFileSelected = false;
} else {
display.setCursor(0, 0);
display.print(F("Select a file"));
}
display.display();
delay(1000);
display.clearDisplay();
}
void selectFile() {
File entry = root.openNextFile();
if (!entry) {
root.rewindDirectory();
} else {
currentFileName = entry.name();
isFileSelected = true;
}
entry.close();
delay(500); // Hindari multiple input dari tombol
}