1
Débuter / Re : Lecture d'une carte SD
« le: octobre 29, 2021, 06:18:52 pm »
J'ai cherché, trouvé et adapté, voilà ce que cela donne.
Je pense que cela vas en aider plus d'un.
Une copie d'écran du résultat sur la pièce jointe.
Merci a tous pour votre aide précieuse.
Je pense que cela vas en aider plus d'un.
Code: [Sélectionner]
/*
* Récupération de données numérique present
* sur une carte SD dans un fichier .txt
* pour les mettre dans une variable
* pour réutilisation dans le programme.
*
* 29/10/21
*
* C.A
*
*/
#include <SPI.h> // Interface pour carte SD
#include <SD.h>
#define sdCardCsPin 53 // Chip Select du lecteur de carte SD à adapter 9 pour UNO 53 pour MEGA
String logFileName = ""; // Nom du fichier d'enregistrement (Texte)
char logSdFileName[13]; // "" (char)
int x, y, z;
// float xfl, yfl, zfl;
void setup()
{
Serial.begin(9600);
delay(500);
//------------------------------------- Demarrage carte SD
Serial.println("Initialisation carte SD...");
if (!SD.begin(sdCardCsPin)) // Si la carte SD ne repond pas
{
Serial.println("Carte SD out ou absente");
return;
}
Serial.println("Carte SD OK\n");
logFileName = "PosPlat.txt"; // longueur max 8+3 caractères
logFileName.toCharArray(logSdFileName, 13);
Serial.print("Niveau reseau ==> ");
x = dataFileGetIndexValue(1); // Rechercher la valeur à la ligne 1
Serial.println(x);
Serial.print("Position -1 ====> ");
x = dataFileGetIndexValue(2); // Rechercher la valeur à la ligne 2
Serial.println(x);
Serial.print("Position -2 ====> ");
x = dataFileGetIndexValue(3); // Rechercher la valeur à la ligne 3
Serial.println(x);
Serial.print("Position -3 ====> ");
x = dataFileGetIndexValue(4); // Rechercher la valeur à la ligne 4
Serial.println(x);
Serial.print("Position -4 ====> ");
x = dataFileGetIndexValue(5); // Rechercher la valeur à la ligne 5
Serial.println(x);
Serial.print("Position -5 ====> ");
x = dataFileGetIndexValue(6); // Rechercher la valeur à la ligne 6
Serial.println(x);
while(1){}
}
void loop()
{
}
float dataFileGetIndexValue(int lineIndex)
{
String lineFromSd;
float returnValue = -1;
int valueIndex = 1;
File dataFile = SD.open((String)logSdFileName, FILE_READ);
if (dataFile)
{
while (dataFile.available())
{
lineFromSd = dataFile.readStringUntil('\n');
String varName = lineFromSd.substring(0, lineFromSd.indexOf(":")); // On prends la partie gauche pour extraire le nom de la variable
varName.toUpperCase(); // Le nom de la variable, mise en majuscule
varName.trim(); // Enlever les espaces inutiles
String varValue = (lineFromSd.substring(lineFromSd.indexOf(":") +1)); // On prends la partie droite comme valeur
if (valueIndex == lineIndex) // Si arrivé à la ligne désirée
{
returnValue = varValue.toFloat(); // Que l'on transforme en valeur float
}
valueIndex ++; // Pour la ligne suivante
}
}
else
{
Serial.println("BAD " + String(logSdFileName));
}
dataFile.clearWriteError();
dataFile.close();
return returnValue;
}
Une copie d'écran du résultat sur la pièce jointe.
Merci a tous pour votre aide précieuse.