PB lecture fichier

Bonjour,

Je souhaite lire des valeurs depuis un fichier sur une carte sd pour renseigner des variables.
J'enregistre les valeurs ainsi.

myFile = SD.open("kwh.txt", FILE_WRITE);
myFile.println(kwh_cumule_pv);
myFile.println(kwh_cumule_in);
myFile.println(kwh_cumule_auto);
myFile.println(kwh_cumule_out);
myFile.println(kwh_cumule_conso);
myFile.println(kwh_Chauffe_Eau);
myFile.println(kwh_pv_Chauffe_Eau);
myFile.println(tx_autoconso_cum);
myFile.println(tx_surprod_cum);
myFile.println(tx_autoconso_ECS_cum);
myFile.close();

J'obtiens dans mon fichier :
0.02
0.01
0.02
0.00
0.03
0.02
0.01
75.00
75.00
50.00

J'essaie ensuite de le lire.
Avec
myFile = SD.open("kwh.txt");
while (myFile.available())
{
Serial.write(myFile.read());
}

Le moniteur série sort bien
0.02
0.01
0.02
0.00
0.03
0.02
0.01
75.00
75.00
50.00

mais avec ceci (valeurs étant déclaré comme float)

index_valeurs = 0;
myFile = SD.open("kwh.txt");
while (myFile.available())
{
valeurs[index_valeurs] = myFile.read();
Serial.println(valeurs[index_valeurs]);
index_valeurs++;
}

J'obtiens
48.00
46.00
48.00
50.00
13.00
10.00
48.00
46.00
48.00
49.00
13.00
10.00
48.00
46.00
48.00
50.00
13.00
10.00
48.00
46.00
48.00
48.00
13.00
10.00
48.00
46.00
48.00
51.00
13.00
10.00
48.00
46.00
48.00
50.00
13.00
10.00
48.00
46.00
48.00
49.00
13.00
10.00
55.00
53.00
46.00
48.00
48.00
13.00
10.00
55.00
53.00
46.00
48.00
48.00
13.00
10.00
53.00
48.00
46.00
48.00
48.00
13.00
10.00

Si quelqu'un a une explication... je pense à un problème de conversion de format, mais je sèche.

Bonjour,

Il faut que tu lises ton fichier ligne par ligne et que tu fasses une conversion ASCII->flottant avec atof (par exemple).

comment fait-on celà ?

Comme ça (par exemple)

  File myFile = SD.open("kwh.txt");

  if (myFile) {
    char ligne[20];
    while (myFile.available()) {
      int n=myFile.readBytesUntil('\n',ligne,sizeof ligne -1);
      ligne[n]=0;           // marque fin de ligne
      float val=atof(ligne);
      Serial.println(val);
    }

    myFile.close();
  }
  else {
    Serial.println("Erreur ouverture fichier");
  }

génial :slight_smile:
Merci beaucoup