#include <SD.h> // шина SPI (pins 11,12,13) + 10(SS-pin, он же обычно CSpin)
#define CS_PIN 10 //вывод выбора чипа. PIN10 стандартно. Его нельзя иначе использовать
File root; //переменная класса File
void loop() { }
void setup() { Serial.begin(115200); Serial.print("Initializing SD card... ");
if(!SD.begin(CS_PIN)) { Serial.println("Card initialization failed!"); while(true); }
Serial.println("initialization done.");//SD.begin() д.б.выполнен обязат,можно без аргумента CS_PIN
Serial.println("Files in the card:");
root = SD.open("/"); // bool root, ссылающийся на открытый на SD файл для чтения (по умолчанию)
printDirectory(root, 0); /*func*/ Serial.println("");
/* File textFile = SD.open("wokwi.txt"); // Печать текста из wokwi.txt
if(textFile) {
Serial.print("wokwi.txt: ");
while (textFile.available() ) { //доступно ли какое-либо кол-во БАЙТОВ для чтения из файла.
Serial.write(textFile.read());} //Собственно команда печати текста из wokwi.txt
textFile.close(); }
else Serial.println("error opening wokwi.txt!"); */
} //конец setup
void printDirectory(File dir, int numTabs) { //аргументы:файл,номер
while(true) {
File entry = dir.openNextFile(); //entry - формальная переменная класса File
if(!entry) break; // no more files
for(byte i = 0; i < numTabs; i++) Serial.print('\t'); //ср. available()... БАЙТОВ
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()); }
entry.close();
}
}