| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | // An example of the SdFatSoftSpi template class.// This example is for an 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 <SPI.h>#include "SdFat.h"#if ENABLE_SOFTWARE_SPI_CLASS  // Must be set in SdFat/SdFatConfig.h//// 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;//// Chip select may be constant or RAM variable.const uint8_t SD_CHIP_SELECT_PIN = 10;// SdFat software SPI templateSdFatSoftSpi<SOFT_MISO_PIN, SOFT_MOSI_PIN, SOFT_SCK_PIN> sd;// Test file.SdFile file;void setup() {  Serial.begin(9600);  // Wait for USB Serial   while (!Serial) {    SysCall::yield();  }  Serial.println("Type any character to start");  while (!Serial.available()) {    SysCall::yield();  }  if (!sd.begin(SD_CHIP_SELECT_PIN)) {    sd.initErrorHalt();  }  if (!file.open("SoftSPI.txt", O_CREAT | O_RDWR)) {    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  // ENABLE_SOFTWARE_SPI_CLASS#error ENABLE_SOFTWARE_SPI_CLASS must be set non-zero in SdFat/SdFatConfig.h#endif  //ENABLE_SOFTWARE_SPI_CLASS
 |