Lire et écrire des données sur une carte sd

Bonjour,

J'ai suivi le tuto lire-et-ecrire-des-donnees-sur-une-carte-sd-avec-une-carte-arduino-genuino/#obtenir-et-ou-modifier-la-position-actuelle-dans-le-fichier

Je voudrait réalisé une lecture de fichier sur la carte sd qui servirait a modifier des variables au démarrage de la carte Arduino par rapport a leur position de ligne dans celle-ci.

Je n'ai pas réussi à réalisé ce que je croit qu'on peut faire avec la fonction "fichier.position()":

File fichier = SD.open("toto.txt", FILE_WRITE);
// Gestion erreur ici

Serial.println(fichier.position()); // Affiche 0
fichier.println(F("Bonjour le monde"));
Serial.println(fichier.position()); // Affiche 18

fichier.seek(0);
fichier.println(F("Bonjour les makers"));
// Le fichier contient désormais "Bonjour les makers" au lieu de "Bonjour le monde"

Dans la ligne commenter "//affiche 0" on indique 0 mais elle correspond à quelle position ?
puis on écrit "Bonjour le monde"
puis on affiche une position 18

puis la fonction "seek" qui indique ou écrire le "Bonjour les makers" ( à 0) ?
mais quelque ligne plus haut il indiquait 18 ...

J'ai du coup rien compris à l'exemple ...

Quelqu'un peut m'éclairé ?

Merci

Bon:
quand le fichier est ouvert, on est positionné à zero selon SD - Arduino Reference . Il y a un petit bemol: ce doit être à la création du fichier; un fichier existant ouvert en mode ecriture, selon la doc, verra son pointeur mis à la fin du fichier... ce qui est sympa)

On ecrit 16 caractéres, plus un CR LF (println); on pointe donc vers le 19 ième caractère, qui est en position ... 18;
Nota: le fait qu'il génère des fichiers windows est confirmé par la doc

Print data, followed by a carriage return and newline

Ca m'a fait souffrir....

seek remet la tête de lecture et d'écriture en début de fichier
cf SD - Arduino Reference
et, à l'issue de toute cette gymnastique, si le fichier est convenablement fermé (par close), il contiendra "Bonjour les makers\n\r"

Et, si j'ai bien lu la doc, vous devez detruire le fichier pour répéter la démo....

Edité
a) je tiens à vous remercier pour le lien, qui est très instructif
b) cependant, je vais vous sembler maniaque, mais
pourquoi, alors que seek (et d'autres) sont des booleans qui renseignent sur l'absence d'erreurs -les concepteurs de la bibliothèque incitent à gérer finement les éventuelles horreurs- ,
pourquoi donc ne les teste-t-on pas (ou du moins ne signale-t-on pas qu'elles n'ont pas été testées pour garder un logiciel lisible, par religion ou?), ces erreurs (ça peut être déroutant au moment où elles se produisent, ou bien après, si on ne les a pas testées?

Bonsoir,

Dans l'idée je voulais enregistré dans l'Eeprom (ça je sait faire) , mais j'ai été séduit par l'idée par la SD.

Au début je voulait sauvegarder l'avancement des variables dans un fichier d'une carte SD en cas de coupure pour ne pas écrire sur l'Eeprom comme les variables change toutes les heures, je sais que l'Eeprom tiens 100 000 écriture je suis large...

Puis je me suis dit pourquoi écrire que l'evolution des variables dans la SD et pourquoi pas les changer dans celle ci avec le PC pour qu'elle soit prise en compte au démarrage de l'arduino...

@+

Normalement, on a interet à stocker dans l'EEPROM des données qui sont rarement modifiées (ex: le baudrate; la liste des voies analogiques qu'on veut scruter) et dans la carte SD des données variant souvent :
ex: des mesures et leur horodatage.
A noter que, si on veut stocker des données à cadence rapide, comme les fichiers sont ouvert en mode 'append' (ecriture à la suite), on est tenté, à chaque écriture, d'ouvrir le fichier; faire l'écriture; fermer le fichier;
Ceci est parfaitement justifié, avec un petit défaut: la fermeture du fichier force l'écriture physique sur la carte, et donc (ceci est signalé dans votre tutoriel) use ladite carte...

Salut ,

en fait pour ecrire les variables d ' un programme on utilise la memoire hardware de l' arduino .

si on veut determiner des variables qui ne change pas , on les declare comme des constantes dans l ' IDE qui les stocke aussi en memoire .

sur une carte SD on va ecrire des données qu ' on veut garder a long therme , pour justement ne pas user ladite carte pour rien .
comme des statistiques , ou d ' autres trucs qu on veut retrouver un jour .une sauvegarde d ' un programme etc ...

d' autre part la ROM ou flash memoire, est utilisé pour y installer un programme creer par l ' utilisateur qui va etre conservé longtemps , on pourrait aussi l ' ecrire sur la carte SD me direz vous , mais il se trouve que par defaut il n ' y a pas de carte SD , d ' ou l' utilisation de la ROM , qui entre autre simplifie aussi l' ecriture du programme ainsi que celle de l ' IDE et le fonctionnement de l' arduino , et qui est a la fois plus performante et plus durable ainsi que non amovible .