#include <SD.h>
#include <stdio.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
File dir;
int cs = 5;
bool state = true;
int cnt = 0;
int cnt2 = 0;
char img [7000];
#define OLED_RESET -1
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup(){
//reading textfile
Serial.begin(115200);
Serial.println("IfSD - Ver.1.00");
Serial.println("# detecting SD-card ...");
if (!SD.begin(cs)){
Serial.println(" -> no SD-card detected");
state = false;
}
if(state == true){
Serial.println(" -> SD-card detected");
}
Serial.println("# listing card files ...");
dir = SD.open("/");
while (true){
File entry = dir.openNextFile();
if (! entry) {
Serial.println(" -> End of files");
break;
}
Serial.print(" [");
Serial.print(cnt);
Serial.print("] ");
Serial.println(entry.name());
cnt++;
}
File textFile = SD.open("/file2choose.txt");
char fileName[100] = "/";
if (textFile) {
Serial.print("# File choosen: ");
while (textFile.available()) {
sprintf(fileName,"%s%c",fileName,textFile.read());
}
Serial.println(fileName);
textFile.close();
} else {
Serial.println(" -> an error occured reading 'file2choose.txt'");
}
Serial.println("# reading file content ...");
//Serial.println("# File content:");
File imageFile = SD.open(fileName);
while(imageFile.available() && cnt2 < 7000){
sprintf(img,"%s%c",img,imageFile.read());
cnt2++;
}
imageFile.close();
Serial.println("# reading complete");
//Serial.println(img);
//init display
Serial.println("# initialize display ...");
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(" -> no display detected");
for(;;);
}
else{
Serial.println(" -> display found");
String s_img(img);
Serial.println(s_img);
display.clearDisplay();
static const unsigned char PROGMEM logo_bmp[7000] = {reinterpret_cast<const unsigned char*>(s_img).c_str()};
display.drawBitmap(0, 0,logo_bmp, 128, 8, 1);
display.display();
}
}
void loop(){
}