| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 | /* * Print size, modify date/time, and name for all files in root. */#include "SdFat.h"// SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h,// 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT.#define SD_FAT_TYPE 0/*  Change the value of SD_CS_PIN if you are using SPI and  your hardware does not use the default value, SS.  Common values are:  Arduino Ethernet shield: pin 4  Sparkfun SD shield: pin 8  Adafruit SD shields and modules: pin 10*/// SDCARD_SS_PIN is defined for the built-in SD on some boards.#ifndef SDCARD_SS_PINconst uint8_t SD_CS_PIN = SS;#else  // SDCARD_SS_PIN// Assume built-in SD is used.const uint8_t SD_CS_PIN = SDCARD_SS_PIN;#endif  // SDCARD_SS_PIN// Try max SPI clock for an SD. Reduce SPI_CLOCK if errors occur.#define SPI_CLOCK SD_SCK_MHZ(50)// Try to select the best SD card configuration.#if HAS_SDIO_CLASS#define SD_CONFIG SdioConfig(FIFO_SDIO)#elif  ENABLE_DEDICATED_SPI#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SPI_CLOCK)#else  // HAS_SDIO_CLASS#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SPI_CLOCK)#endif  // HAS_SDIO_CLASS#if SD_FAT_TYPE == 0SdFat sd;File dir;File file;#elif SD_FAT_TYPE == 1SdFat32 sd;File32 dir;File32 file;#elif SD_FAT_TYPE == 2SdExFat sd;ExFile dir;ExFile file;#elif SD_FAT_TYPE == 3SdFs sd;FsFile dir;FsFile file;#else  // SD_FAT_TYPE#error invalid SD_FAT_TYPE#endif  // SD_FAT_TYPE//------------------------------------------------------------------------------// Store error strings in flash to save RAM.#define error(s) sd.errorHalt(&Serial, F(s))//------------------------------------------------------------------------------void setup() {  Serial.begin(9600);  // Wait for USB Serial  while (!Serial) {    yield();  }  Serial.println("Type any character to start");  while (!Serial.available()) {    yield();  }  // Initialize the SD.  if (!sd.begin(SD_CONFIG)) {    sd.initErrorHalt(&Serial);  }  // Open root directory  if (!dir.open("/")){    error("dir.open failed");  }  // Open next file in root.  // Warning, openNext starts at the current position of dir so a  // rewind may be necessary in your application.  while (file.openNext(&dir, O_RDONLY)) {    file.printFileSize(&Serial);    Serial.write(' ');    file.printModifyDateTime(&Serial);    Serial.write(' ');    file.printName(&Serial);    if (file.isDir()) {      // Indicate a directory.      Serial.write('/');    }    Serial.println();    file.close();  }  if (dir.getError()) {    Serial.println("openNext failed");  } else {    Serial.println("Done!");  }}//------------------------------------------------------------------------------void loop() {}
 |