Problème variables interne/externe

Bonjour,
je travaille actuellement sur un robot holonome auqeul je veux faire faire une rotation de 180°.
Pour cela, j'utilise un encodeur que j'incrémente dans un programme principal sur front montant
attachInterrupt(codeurInterruptionA, GestionInterruptionCodeurPinA, RISING);
void GestionInterruptionCodeurPinA()
{
ticksCodeur++;
float tour1=ticksCodeur0.00775;
float parcours1=tour1
4.000*3.1415;
}
Le problème, c'est que j'aimerai récupérer dans une librairie (que j'inclus au début du fichier) la valeur de parcours1 en temps direct. J'ai essayé de déclarer float parcours1 dans ma "librairie.h" mais je ne récupère que parcours1=0 dans "librairie.cpp".

Déclare ta variable en globale, c'est-à-dire hors de ta fonction.

Si tu veux l'utiliser ailleurs, tu dois mettre "extern float parcours1" dans ton .h, et l'instancer quelque part dans un .cpp/.ino (une fois).

Ou bien si c'est possible tu peux passer ta variable en argument de fonction de la lib

... et la passer en pointeur ou référence, vu qu'il faut la modifier dans la fonction.

Mais vu que c'est une interruption, il n'y a pas moyen de passer un paramètre et il faut donc passer par une variable globale.

XavierMiller:
... et la passer en pointeur ou référence, vu qu'il faut la modifier dans la fonction.

C'est pas précisé :wink:

samueli37:
Le problème, c'est que j'aimerai récupérer dans une librairie (que j'inclus au début du fichier) la valeur de parcours1 en temps direct

Après pour le passage en argument de fonction pas possible en interruption je suis surpris, ça vient d'où cette limitation ?

Je parle d'expérience "PC" où une interruption ne peut pas avoir de paramètre. Mais est-ce différent sur Arduino ?

Comme ça je vois pas ce qui l'empêche, en tout cas, au niveau code. Après les interruptions ça stoppe beaucoup de chose sur Arduino, et millis() et delay() entre autre, donc d'autres problèmes potentiels et effets de bords peuvent gêner une execution correctes