Créer un fichier csv avec comme nom la date du jour à chaque téléversement

Bonjour,

J'ai comme projet de mesurer 3 constantes physiques : Pulsations cardiaques, conductivité de la peau et emg.
J'utilise pour ça :

  • Arduino Uno
  • Module Grove Base Shield 103030000
  • Shield data logger GT1046
  • Module de conductivité de la peau GSR Grove 101020052
  • Détecteur EMG Grove 101020058
  • Capteur BPM 103020024
  • Carte SD 16 Go

J'ai créé un programme qui récupère les données des trois capteurs et qui les envoie dans le moniteur série
J'arrive à enregistrer ces données sur une carte SD dans un fichier csv créé manuellement.
Je souhaiterai que, à chaque téléversement, qu'un nouveau fichier et qui porte comme nom la date du jour.

Comment faire cette dernière étape s'il vous plait ?

Cordialement

En général, on adopte la convention de nommage "annéemoisjour" (par exemple 20221201 aujourd'hui) pour faciliter la recherche ou le classement des fichiers.

Pour faire ça, tu as besoin de connaître la date, ça peut se faire grâce à un serveur NTP si ta carte Arduino a un accès à internet, ou avec une RTC.

Ton ami ici s'appelle sprintf : cette fonction te permet de créer un tableau de caractères à partir d'autres variables de ton programme.
Ainsi si tu as les variables (int) annee, mois et jour, tu peux créer ton nom de fichier comme ceci :

char nomFichier[9];
sprintf(nomFichier, "%d%02d%02d", annee, mois, jour);

Le format d'écriture est entre les guillemets. Tu peux trouver des explications sur ce format sur google, par exemple ici.

Si tu veux mettre une extension au fichier, il faut la prendre en compte dans la longueur de la chaine :

char nomFichier[13];
sprintf(nomFichier, "%d%02d%02d.txt", annee, mois, jour);

Bonjour

Merci de votre réponse, le problème c'est que je n 'ai pas de module possédant de RTC, est-il possible de créer un nom de fichier du type "donneesun, donneesdeux" etc

Bien sûr, selon le même principe. Eviter les virgules dans un nom de fichier cependant, car il est possible que ça ne soit reconnu.
Si tu as trois variables : 'a' contient 22, 'b' contient 6 et 'c' contient 14, tu peux créer un fichier de nom 220614.txt comme ceci :

char nomFichier[11];
sprintf(nomFichier, "%02d%02d%02d.txt", a, b, c);

Ici je suppose que tes variables sont des entiers positifs entre 0 et 99.

La valeur '11' est à choisir en fonction de la taille de tes données. Si tu as 1024, 2365 et 8569 il te faudra plus de place.

Bonjour, je suis moi aussi très débutant et je voudrais savoir comment faire cela, mais je n'ai pas de rtc , j'ai une connexion wifi, et j'utilise déjà time.h pour datalogger les données dans mon fichier .
pouvez vous m'aider?

Le mieux serait de créer un nouveau topic où tu exposeras ton problème, en suivant les recommandations du message d'accueil, afin de nous donner le maximum d'information.

Ok avec plaisir.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.