Merge pull request #2973 from FoamyGuy/metro2350

Arduino SD Card example
This commit is contained in:
foamyguy 2025-02-18 17:35:28 -06:00 committed by GitHub
commit 547a3315e6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 92 additions and 0 deletions

View file

@ -0,0 +1 @@

View file

@ -0,0 +1,91 @@
// SPDX-FileCopyrightText: 2025 Liz Clark for Adafruit Industries
//
// SPDX-License-Identifier: MIT
/*
SD card read/write
This example shows how to read and write data to and from an SD card file
The circuit:
* SD card attached to SPI bus as follows:
** MOSI - pin 35
** MISO - pin 36
** CLK - pin 34
created Nov 2010
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe
modified 14 Feb 2023
by Liz Clark
modified 25 Aug 2023
by Kattni Rembor
modified 18 Feb 2025
by Tim Cocks
This example code is in the public domain.
*/
#include <SPI.h>
#include "SdFat.h"
#define SD_CS_PIN 39
SdFat SD;
FsFile myFile;
SdSpiConfig config(SD_CS_PIN, DEDICATED_SPI, SD_SCK_MHZ(16), &SPI1);
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(115200);
while (!Serial) { yield(); delay(10); } // wait till serial port is opened
delay(100); // RP2040 delay is not a bad idea
Serial.print("Initializing SD card...");
// Retry mechanism for SD card initialization
while (!SD.begin(config)) {
Serial.println("initialization failed! Retrying...");
delay(1000); // Wait for a second before retrying
}
Serial.println("initialization done.");
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
myFile = SD.open("test.txt", FILE_WRITE);
// if the file opened okay, write to it:
if (myFile) {
Serial.print("Writing to test.txt...");
myFile.println("testing 1, 2, 3.");
myFile.println("hello world!");
// close the file:
myFile.close();
Serial.println("done.");
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
// re-open the file for reading:
myFile = SD.open("test.txt");
if (myFile) {
Serial.println("test.txt:");
// read from the file until there's nothing else in it:
while (myFile.available()) {
Serial.write(myFile.read());
}
// close the file:
myFile.close();
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
}
void loop() {
// nothing happens after setup
}