Bonjour,

Ma question est :
Utiliser un pointeur ou une variable globale pour passer une structure à des fonctions.

Etat de la situation :

Hardware : Arduino MKR1010 SAMD21 Cortex®-M0+ 32bit low power ARM® MCU
Utilisateur : 1 l'arduino.
Programmeur :1 moi.

Le programme: Lire les valeurs de capteurs et les mettre dans un tableau de valeurs moyennes glissantes minutes.

Avec un ordinateur "standard", la question ne se poserait que peu, un pointeur évidemment.

Mais avec Arduino, la séquence est quelque peu différente.

Un Arduino démarre avec un "setup" qui n'est effectué qu'une fois au démarrage , puis un "loop" qui est répété ad vitam.....

Pour Calculer une moyenne glissante dans le loop, je fais ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
...............
Vm.dTT += sens.readTemperature();
Vm.dTT /=2;
..........
Opération repetée tous les 10secondes.
A chaque minute, je stocke les valeurs dans un fichier ou une DB sur un Raspberry (MariaDb)

Le soucis vient du départ du logiciel.
Lorsque le code est effectué pour la première fois, la valeur dans Vm.dTT est la moitié de la valeur lue par le capteur.
Il faut alors écrire une boucle pour vérifier si l'on est au premier passage ou aux suivants......
Pour palier cela, il est simple de faire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Vm.dTT = sens.readTemperature();
dans le setup.

Oui mais :
Si je déclare
Code : Sélectionner tout - Visualiser dans une fenêtre à part
struct ValeurMinute Vm;
dans le "Loop", je ne peut utiliser Vm dans le setup...
Si je declare Vm dans le setup, Cette variable n'existe pas dans le loop.......

De plus, si j’enchaîne le passage de fonction,
Main() -> menu() ->MetEnForme()->affiche()
Je dois chaque fois passer le pointeur pour chaque appel de fonction ....?

Si j'ai plusieurs variables à passer à mes fonctions, leur déclarations devient vite complexe.(C'est là qu'on devient fainéant ???)

Comme je programme tout seul dans mon petit coin et vu la structure de l'Arduino, les variables globales me semble une solution(de feignasse) simple à écrire.

Si je pouvais avoir des avis sur la question....

Un grand merci


Michel