x:111
y:222
z:333
xfl:222.25
yfl:123.65
zfl:445.12
abc:988
effectivement c est ça,
je veux ouvrir mon fichier txt et par exemple donner à x la valeur de la 5 iem ligne
ce qui donnera x dorénavant = 126.65
x:111
y:222
z:333
xfl:222.25
yfl:123.65
zfl:445.12
abc:988
effectivement c est ça,
je veux ouvrir mon fichier txt et par exemple donner à x la valeur de la 5 iem ligne
ce qui donnera x dorénavant = 126.65
Le fichier que je vous ai envoyé contient bien de passage à la ligne mais votre PC ne les voit pas mais l’Arduino lui les reconnaît
Rebonsoir malox56
malox56:
ce qui donnera x dorénavant = 126.65
Ça se passe dans float dataFileGetIndexValue(int lineIndex)
#include <SPI.h> // Interface pour carte SD
#include <SD.h>
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#define sdCardCsPin 9 // Chip Select du lecteur de carte SD à adapter
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
String logFileName = ""; // Nom du fichier d'enregistrement (Texte)
char logSdFileName[13]; // "" (char)
int x, y, z;
float xfl, yfl, zfl;
void setup()
{
Serial.begin(115200);
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 = "Sauv_01.txt"; // longueur max 8+3 caractères
logFileName.toCharArray(logSdFileName, 13);
////--------------------------------- Récupération des variables sutr carte SD
//logFileLectureVariables();
//Serial.println("Variable X = " + String(x));
//Serial.println("Variable Y = " + String(y));
//Serial.println("Variable Z = " + String(z));
//Serial.println("Variable Xfl = " + String(xfl));
//Serial.println("Variable Yfl = " + String(yfl));
//Serial.println("Variable Zfl = " + String(zfl));
Serial.print("Valeur ligne 5 int\t");
x = dataFileGetIndexValue(5); // Rechercher la valeur à la ligne 5
Serial.println(x);
Serial.print("Valeur ligne 5 float\t");
xfl = dataFileGetIndexValue(5); // Rechercher la valeur à la ligne 5
Serial.println(xfl);
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;
}
void logFileLectureVariables()
{
String lineFromSd;
File dataFile = SD.open((String)logSdFileName, FILE_READ);
Serial.println("\nLecture " + (String)logSdFileName);
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 (varName == "X")
{
x = varValue.toInt();
}
else if (varName == "Y")
{
y = varValue.toInt();
}
else if (varName == "Z")
{
z = varValue.toInt();
}
else if (varName == "XFL")
{
xfl = varValue.toFloat();
}
else if (varName == "YFL")
{
yfl = varValue.toFloat();
}
else if (varName == "ZFL")
{
zfl = varValue.toFloat();
}
else
{
if (varName != "") // Si pas ligne vide
{
Serial.println("Variable " + varName + " INCONNUE!!!");
}
}
}
}
else
{
Serial.println("BAD " + String(logSdFileName));
}
Serial.println("Fin lecture\n");
dataFile.clearWriteError();
dataFile.close();
}
Cordialement et bonne soirée
jpbbricole
Juste parfait !!!!
Merci à vous tous :*