#include <SD.h>
// Variables utilisées pour la SD Card
#define sdCardPinChipSelect 10 // Le lecteur de SD card sera branché sur les pins 10 (CS), 11 (MOSI), 12 (MISO), et 13 (SCK)
#define nomDuFichier "fic-test.txt" // Format 8.3 (c'est à dire 8 lettres maximum pour le nom, et optionnellement 3 pour l'extension)
#define texteDeTest "Blabla écrit dans un fichier logé sur la carte SD, via un Arduino !"
File monFichier;
// ========================
// Initialisation programme
// ========================
void setup () {
// Initialisation de la liaison série (pour retourner les infos au moniteur série de l'ordi)
Serial.begin(115200);
Serial.println(F("Programe de test de lecture/écriture de fichier sur Carte SD, reliée à un Arduino Uno"));
Serial.println(F("====================================================================================="));
Serial.println();
// ------------------------------------------------------------------
// Étape 1 : test si la carte SD est bien accessible depuis l'arduino
// ------------------------------------------------------------------
Serial.println(F("Étape 1 : Initialisation de la carte SD :"));
if (!SD.begin(sdCardPinChipSelect)) {
Serial.println(F("Échec de l'initialization !"));
while (1); // Boucle infinie (stoppage du programme)
}
Serial.println(F("Initialisation terminée."));
Serial.println();
// ------------------------------------------------------------------
// Étape 2 : suppression du fichier 'nomDuFichier' si existe déjà
// ------------------------------------------------------------------
Serial.println(F("Étape 2 : suppression du fichier '" nomDuFichier "', si déjà existant :"));
if (!SD.exists(nomDuFichier)) {
Serial.println(F("Fichier '" nomDuFichier "' inexistant."));
}
else {
Serial.println(F("Fichier '" nomDuFichier "' déjà existant, donc lancement suppression."));
// Suppression du fichier déjà existant
if(!SD.remove(nomDuFichier)) {
Serial.println(F("Échec de suppression du fichier '" nomDuFichier "' présent sur la SD card !"));
while (1); // Boucle infinie (arrêt du programme)
}
else {
Serial.println(F("Suppression du fichier existant réussie."));
}
}
Serial.println();
// ------------------------------------------------------------------
// Étape 3 : écriture de données dans le fichier 'nomDuFichier'
// ------------------------------------------------------------------
Serial.println(F("Étape 3 : écriture de données dans le fichier '" nomDuFichier "' :"));
monFichier = SD.open(nomDuFichier, FILE_WRITE);
if (monFichier) {
Serial.println(F("Écriture de la chaîne suivante, dans le fichier '" nomDuFichier "' : « " texteDeTest " »"));
monFichier.println(texteDeTest); // Écriture dans le fichier
monFichier.close(); // Fermeture du fichier
Serial.println("Écriture terminée.");
}
else {
Serial.println(F("Échec d'ouverture en écriture, pour le fichier '" nomDuFichier "', sur la carte SD !"));
while (1); // Boucle infinie (arrêt du programme)
}
Serial.println();
// ------------------------------------------------------------------
// Étape 4 : lecture des données précédemment enregistrées
// ------------------------------------------------------------------
Serial.println(F("Étape 4 : lecture des données précédemment enregistrées dans le fichier '" nomDuFichier "' :"));
monFichier = SD.open(nomDuFichier, FILE_READ);
if (monFichier) {
Serial.println(F("Affichage du contenu du fichier '" nomDuFichier "', ci-après."));
Serial.write("-> Texte présent dans le fichier = ");
while (monFichier.available()) { // Lecture, jusqu'à ce qu'il n'y ait plus rien à lire
Serial.write(monFichier.read()); // ... et affichage sur le moniteur série !
}
monFichier.close(); // Fermeture du fichier
Serial.println(F("Lecture terminée."));
}
else {
Serial.println(F("Échec lors de l'ouverture en lecture du fichier '" nomDuFichier "' sur la carte SD !"));
while (1); // Boucle infinie (arrêt du programme)
}
Serial.println();
// ------------------------------------------------------------------
// Fin du programme de test !
// ------------------------------------------------------------------
Serial.println(F("Fin !"));
}
// =================
// Boucle principale
// =================
void loop () {
// Vide, car tout se passe dans la fonction "setup" !
}