#include <SD.h>
#include <MD5Builder.h>
#include <SPI.h>
#define CS_PIN 15
File f;
String file_md5 (File & f)
{
if (!f) {
return String();
}
if (f.seek(0, SeekSet)) {
MD5Builder md5;
md5.begin();
md5.addStream(f, f.size());
md5.calculate();
return md5.toString();
}
return String();
}
void setup() {
Serial.begin(115200);
Serial.println(sizeof(double));
Serial.println(400/float(3600*24*100),60);
Serial.print("Initializing SD card... ");
SPI.begin(14, 12, 13, CS_PIN); // MOSI, MISO, SCK, CS
if (!SD.begin(CS_PIN, SPI)) {
Serial.println("Card initialization failed!");
while (true);
}
Serial.println("initialization done.");
Serial.println("Files in the card:");
f = SD.open("/wokwi.txt","a");
f.println("p");
f.close();
Serial.println("");
// Example of reading file from the card:
File textFile = SD.open("/wokwi.txt");
Serial.println(file_md5(textFile));
}
void loop() {
delay(100);
// nothing happens after setup finishes.
}
void printDirectory(File dir, int numTabs) {
while (true) {
File entry = dir.openNextFile();
if (! entry) {
// no more files
break;
}
for (uint8_t i = 0; i < numTabs; i++) {
Serial.print('\t');
}
Serial.print(entry.name());
if (entry.isDirectory()) {
Serial.println("/");
printDirectory(entry, numTabs + 1);
} else {
// files have sizes, directories do not
Serial.print("\t\t");
Serial.println(entry.size(), DEC);
}
entry.close();
}
}