/* Listfiles This example shows how to print out the files in a directory on a SD card. Pin numbers reflect the default SPI pins for Uno and Nano models The circuit: SD card attached to SPI bus as follows: ** SDO - pin 11 ** SDI - pin 12 ** CLK - pin 13 ** CS - depends on your SD card shield or module. Pin 10 used here for consistency with other Arduino examples (for MKR Zero SD: SDCARD_SS_PIN) created Nov 2010 by David A. Mellis modified 9 Apr 2012 by Tom Igoe modified 2 Feb 2014 by Scott Fitzgerald modified 24 July 2020 by Tom Igoe This example code is in the public domain. */ #include const int chipSelect = 10; File root; void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); // wait for Serial Monitor to connect. Needed for native USB port boards only: while (!Serial); Serial.print("Initializing SD card..."); if (!SD.begin(chipSelect)) { Serial.println("initialization failed. Things to check:"); Serial.println("1. is a card inserted?"); Serial.println("2. is your wiring correct?"); Serial.println("3. did you change the chipSelect pin to match your shield or module?"); Serial.println("Note: press reset button on the board and reopen this Serial Monitor after fixing your issue!"); while (true); } Serial.println("initialization done."); root = SD.open("/"); printDirectory(root, 0); Serial.println("done!"); } void loop() { // 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(); } }