| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | // An example of the SoftSpiDriver template class.// This example is for an old Adafruit Data Logging Shield on a Mega.// Software SPI is required on Mega since this shield connects to pins 10-13.// This example will also run on an Uno and other boards using software SPI.//#include "SdFat.h"#if SPI_DRIVER_SELECT == 2  // Must be set in SdFat/SdFatConfig.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//// Chip select may be constant or RAM variable.const uint8_t SD_CS_PIN = 10;//// Pin numbers in templates must be constants.const uint8_t SOFT_MISO_PIN = 12;const uint8_t SOFT_MOSI_PIN = 11;const uint8_t SOFT_SCK_PIN  = 13;// SdFat software SPI templateSoftSpiDriver<SOFT_MISO_PIN, SOFT_MOSI_PIN, SOFT_SCK_PIN> softSpi;// Speed argument is ignored for software SPI.#if ENABLE_DEDICATED_SPI#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SD_SCK_MHZ(0), &softSpi)#else  // ENABLE_DEDICATED_SPI#define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SD_SCK_MHZ(0), &softSpi)#endif  // ENABLE_DEDICATED_SPI#if SD_FAT_TYPE == 0SdFat sd;File file;#elif SD_FAT_TYPE == 1SdFat32 sd;File32 file;#elif SD_FAT_TYPE == 2SdExFat sd;ExFile file;#elif SD_FAT_TYPE == 3SdFs sd;FsFile file;#else  // SD_FAT_TYPE#error Invalid SD_FAT_TYPE#endif  // SD_FAT_TYPEvoid setup() {  Serial.begin(9600);  // Wait for USB Serial  while (!Serial) {    yield();  }  Serial.println("Type any character to start");  while (!Serial.available()) {    yield();  }  if (!sd.begin(SD_CONFIG)) {    sd.initErrorHalt();  }  if (!file.open("SoftSPI.txt", O_RDWR | O_CREAT)) {    sd.errorHalt(F("open failed"));  }  file.println(F("This line was printed using software SPI."));  file.rewind();  while (file.available()) {    Serial.write(file.read());  }  file.close();  Serial.println(F("Done."));}//------------------------------------------------------------------------------void loop() {}#else  // SPI_DRIVER_SELECT#error SPI_DRIVER_SELECT must be two in SdFat/SdFatConfig.h#endif  //SPI_DRIVER_SELECT
 |