#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <SPI.h>
#include <SD.h>
#define OLED_RESET -1 //-1 indicate NO_Reset_Pin for O_LED
#define SD_CS_PIN 53 // Chip_select_pin for SD_card
// Initialize O_LED_display
Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);
File myFile;
void setup() {
Serial.begin(9600);
// Initialize O_LED with 0x3C address(I2C)
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
while (true);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
// Initialize SD_card
if (!SD.begin(SD_CS_PIN)) { // SD_CS_PIN = 53
Serial.println(F("SD card initialization failed!"));
display.println(F("SD init failed"));
display.display();
while (true);
}
Serial.println(F("SD card initialized"));
// Write to a file on SD_card for storing
myFile = SD.open("Sample_1.txt", FILE_WRITE);
if (myFile) {
Serial.println(F("Writing to Sample_1.txt..."));
myFile.println(F("Hello, Guys!\n"));
myFile.println(F("This the Interaction\n"));
myFile.println(F("of SPI with SD-Card\n"));
myFile.println(F("and ATmega2560.\n"));
myFile.close();
Serial.println(F("Data written to SD card"));
} else {
Serial.println(F("Error opening Sample_1.txt"));
}
//F() macro stores text in flash_memory,
//not in RAM, to save_memory.
// Display message on O_LED that
// both initailize_and_write is Done
display.clearDisplay();
display.setCursor(0, 0);
display.print("SD Card initialized");
display.setCursor(0, 10);
display.print("Writing to file...");
display.display();
delay(2000);
}
void loop() {
// Check if the file_exists and read its contents
if (SD.exists("Sample_1.txt")) {
myFile = SD.open("Sample_1.txt");
if (myFile) {
display.clearDisplay();
display.setCursor(0, 0);
display.print("Reading from file:");
display.display();
delay(1000);
display.clearDisplay();
display.setCursor(0, 0);
while (myFile.available()) {
display.print((char)myFile.read());
}
myFile.close();
display.display();
} else {
Serial.println(F("Error opening Sample_1.txt for reading"));
}
} else {
Serial.println(F("File does not exist"));
}
delay(5000); // Wait for 5 seconds before reading again
// and after print what the content in the SD-Card
}