Bonjour,
J'ai réalisé un programme me permettant d'enregistrer une tension d'une broche sur une carte sd tout les 1 sec avec au total 60 seconde d'enregistrement, à chaque fin d'enregistrement je ferme le fichier, si je ne met pas la fonction pour fermer le fichier toutes les données sont perdu, et si je retire la carte avant les 60 secondes pareille toutes les données sont perdu, je voudrais que le programme enregistre en continu, j'a pensé à une boucle for avec un paramètre très élevé afin d'être le plus tranquille mais le mieux serait de faire une sorte de boucle for infini pour que lorsqu'on retire la carte on perd uniquement les 60 dernière seconde, je vous met mon programme avec la boucle for que j'ai réalisé (inspiré du forum), je n'enregistre qu'une fois alors que j'ai mis d'enregistrer trois fois.
#include <SD.h>
unsigned long dureeAcquisition = 60000;
unsigned long periodeEchantillon = 1000;
unsigned long temps;
unsigned long compteur;
unsigned long chrono;
char nomDuFichier[20];
int numFichier = 42;
File fichierMesure;
void setup() {
Serial.begin(115200);
SD.begin();
sprintf(nomDuFichier, "log%05d.csv", numFichier);
fichierMesure = SD.open(nomDuFichier, FILE_WRITE);
if (!fichierMesure)
{
Serial.println(F("Erreur ouverture fichier"));
while (true) yield();
}
Serial.print("C'est parti !");
chrono = temps = millis();
}
void loop()
{
for (compteur=0;compteur<4;compteur++)
{
if (millis() - temps <= dureeAcquisition)
{
if (millis() - chrono >= periodeEchantillon)
{
float MT = analogRead(A0) * 5 / 1023.0;
chrono = millis();
fichierMesure.print("chrono: ");
fichierMesure.println(chrono);
fichierMesure.print("A0: ");
fichierMesure.println(MT);
}
}
else
{
fichierMesure.close();//On ferme le fichier, il ne faut pas oublier !
Serial.print("terminé");
unsigned long reset =0;
reset=millis() ;
}
}
while (true) yield();
}