Probleme ecriture dans csv : cellules decalees

Bonjour,
Travaillant sur un projet de station météo, j’écris sur un fichier csv certaines données des 5 capteurs. L’écriture fonctionne mais la dernière cellule est décalée d’une cellule vers la droite ce qui décale toute les autres écritures suivantes.
Cela est embêtant pour l’exploitation par la suite (graphiques). Je joins une portion du code et une copie d’écran.
Je débute, aussi je ne connais pas toutes les finesses. Merci beaucoup pour votre aide.

unsigned long currentTime = millis();

if((currentTime - previousTime > cycle)&&(previousTime<=arret))
{
previousTime = currentTime;
Serial.print(“indice: “);
Serial.println(i);
data_meteo = SD.open(“meteo.csv”,FILE_WRITE); // ouverture du fichier
data_meteo.print(clock.dateFormat(“d-m-y H:i:s”, dt)); //1 date
data_meteo.print(”;”);
data_meteo.print(DOUT); //2 concentration GPL ppm
data_meteo.print(";");
data_meteo.print(sensorValue, DEC); //3 CO2 ppm
data_meteo.print(";");
data_meteo.print(current_quality); //4 CO qualite de l’air
data_meteo.print(";");
data_meteo.print(humidityString); // 5 la lecture des données fournie par le capteur puis leurs écriture dans le fichier
data_meteo.print(";");
data_meteo.print(temperatureString); // 6 la lecture des données fournie par le capteur puis leurs écriture
data_meteo.print(";");
data_meteo.println(pressureString); // 7 la lecture des données fournie par le capteur puis leurs écriture
data_meteo.print(";");
data_meteo.print(concentration); //8 concentration poussiere
data_meteo.print(";");
data_meteo.close();
// fermeture du fichier
i++;
Serial.println(“Donnees ecrites”);
}

Bonsoir,

Corrige ton post en utilisant les balises prévues stp.

Le problème vient du 'println' à la place de 'print' que tu utilises pour enregistrer 'pressureString'.
Utilise 'println' pour ta dernière donnée sans ajouter de ';' à la fin.

Merci beaucoup !
De quelles balises parles-tu ?

Frankydu13:
De quelles balises parles-tu ?

Bonjour,

Voir ici

Merci beaucoup. :slight_smile: Voici le code corrigé :

unsigned long currentTime = millis();            
  
if((currentTime - previousTime > cycle)&&(previousTime<=arret))
{
previousTime = currentTime; 
Serial.print("indice:    ");
Serial.println(i);
data_meteo = SD.open("meteo.csv",FILE_WRITE); // ouverture du fichier 
data_meteo.print(clock.dateFormat("d-m-y H:i:s", dt)); //1 date
data_meteo.print(";");
data_meteo.print(DOUT); //2 concentration GPL ppm
data_meteo.print(";");
data_meteo.print(sensorValue, DEC); //3 CO2 ppm
data_meteo.print(";");
data_meteo.print(current_quality); //4 CO qualite de l'air
data_meteo.print(";");
data_meteo.print(humidityString); // 5 la lecture des données fournie par le capteur puis leurs écriture dans le fichier 
data_meteo.print(";");
data_meteo.print(temperatureString);  // 6 la lecture des données fournie par le capteur puis leurs écriture 
data_meteo.print(";");
data_meteo.println(pressureString);  // 7 la lecture des données fournie par le capteur puis leurs écriture 
data_meteo.print(";");
data_meteo.print(concentration); //8 concentration poussiere
data_meteo.print(";");
data_meteo.close();    
// fermeture du fichier 
i++;
Serial.println("Donnees ecrites");
}

tu aurais pu éditer ton post initial.

Bonjour,
Travaillant sur un projet de station météo, j’écris sur un fichier csv certaines données des 5 capteurs. L’écriture fonctionne mais la dernière cellule est décalée d’une cellule vers la droite ce qui décale toute les autres écritures suivantes.
Cela est embêtant pour l’exploitation par la suite (graphiques). Je joins une portion du code et une copie d’écran.
Je débute, aussi je ne connais pas toutes les finesses. Merci beaucoup pour votre aide.

unsigned long currentTime = millis();            
  
if((currentTime - previousTime > cycle)&&(previousTime<=arret))
{
previousTime = currentTime; 
Serial.print("indice:    ");
Serial.println(i);
data_meteo = SD.open("meteo.csv",FILE_WRITE); // ouverture du fichier 
data_meteo.print(clock.dateFormat("d-m-y H:i:s", dt)); //1 date
data_meteo.print(";");
data_meteo.print(DOUT); //2 concentration GPL ppm
data_meteo.print(";");
data_meteo.print(sensorValue, DEC); //3 CO2 ppm
data_meteo.print(";");
data_meteo.print(current_quality); //4 CO qualite de l'air
data_meteo.print(";");
data_meteo.print(humidityString); // 5 la lecture des données fournie par le capteur puis leurs écriture dans le fichier 
data_meteo.print(";");
data_meteo.print(temperatureString);  // 6 la lecture des données fournie par le capteur puis leurs écriture 
data_meteo.print(";");
data_meteo.println(pressureString);  // 7 la lecture des données fournie par le capteur puis leurs écriture 
data_meteo.print(";");
data_meteo.print(concentration); //8 concentration poussiere
data_meteo.print(";");
data_meteo.close();    
// fermeture du fichier 
i++;
Serial.println("Donnees ecrites");
}

Et voici le code corrigé :

unsigned long currentTime = millis();            // l'utilisation de millis() évite l'utilisation de Delay()
  
if((currentTime - previousTime > cycle)&&(previousTime<=arret))
{
previousTime = currentTime; 
Serial.print("indice:    ");
Serial.println(i);
data_meteo = SD.open("meteo.csv",FILE_WRITE); // ouverture du fichier 
data_meteo.print(clock.dateFormat("d-m-y H:i:s", dt)); //1 date
data_meteo.print(";");
data_meteo.print(DOUT); //2 concentration GPL ppm
data_meteo.print(";");
data_meteo.print(sensorValue, DEC); //3 CO2 ppm
data_meteo.print(";");
data_meteo.print(current_quality); //4 CO qualite de l'air
data_meteo.print(";");
data_meteo.print(humidityString); // 5 la lecture des données fournie par le capteur puis leurs écriture dans le fichier 
data_meteo.print(";");
data_meteo.print(temperatureString);  // 6 la lecture des données fournie par le capteur puis leurs écriture 
data_meteo.print(";");
data_meteo.print(pressureString);  // 7 la lecture des données fournie par le capteur puis leurs écriture 
data_meteo.print(";");
data_meteo.println(concentration); //8 concentration poussiere
data_meteo.close();    
// fermeture du fichier 
i++;
Serial.println("Donnees ecrites");
}

Encore merci pour votre aide :slight_smile:

tu aurais pu éditer ton post initial.

Quand je vois du code en vrac dans le message, je ne regarde même pas.
Si tout le monde en faisait autant ...

Ce que le monsieur a voulu te dire c'est qu'il t'est toujours possible de modifier un de tes message et qu'il n'était pas utile de recopier dans un autre message.

Pour modifier un message :
Tu peux lire le message épinglé "Bien éditer son post pour les nuls" mais ce n'est pas organisé comme un tuto tout est en vrac . Il y a des informations intéressantes mais ce n'est pas aisé à lire.

Autre solution : Dans le message que tu veux modifier tu peux survoler "More" en bas à droite du message et cliquer sur "Modify".
Une fois modifié tu clique sur "Save"