Partage
  • Partager sur Facebook
  • Partager sur Twitter

Detection changement valeur potentiomètre Arduino

Sujet résolu
7 août 2017 à 10:22:21

Bonjour,

Je suis face à un problème qui a l'air tout simple mais que je n'arrive pas à résoudre, je souhaiterais en effet détecter le moment ou un potentiomètre relié à mon Arduino change de position, pour cela je sais qu'il faut bien sûr récupérer la valeur actuelle du potentiomètre avec un analogRead() et qu'il faut également stocker la valeur précédente du potentiomètre sur laquelle se baser pour detecter le changement de position. Cependant je ne sais pas comment gérer la variable "valeurPrecedente".. Je pense que je passe à côté d'un truc tout bête.. Voici mon code qui donc ne fonctionne pas (juste une piste) : 

int valActuelle = analogRead(A0);
 
 if(valActuelle != valPrecedente){
    Serial.println("Valeur modifiée");
    valeurPrecedente = valActuelle;
 }

Merci d'avance pour votre aide :)

  • Partager sur Facebook
  • Partager sur Twitter
7 août 2017 à 12:53:37

Il faut que ta variable valPrecedente soit déclarée en temps que variable globale si tu veux que sa valeur reste en mémoire entre 2 exécution de la fonction loop.

Exemple:

int valPrecedente;    // Variable globale

void setup() {
    Serial.begin(9600);    // Init Serial
    valPrecedente = -1;    // Init valPrecedente (-1 pour afficher "val modifiée" au début)
}

void loop() {

    int valActuelle;    // Variable locale

    valActuelle = analogRead(A0);

    if ( valActuelle != valPrecedente ){
        Serial.println("val modifiée");
        valPrecedente = valActuelle;
    }

}



-
Edité par lorrio 7 août 2017 à 12:54:11

  • Partager sur Facebook
  • Partager sur Twitter
7 août 2017 à 14:13:43

Merci beaucoup! La clé était bien sûr de mettre la variable en variable globale!
  • Partager sur Facebook
  • Partager sur Twitter
8 août 2017 à 15:37:00

Ou alors la déclarer comme statique dans la fonction loop.
  • Partager sur Facebook
  • Partager sur Twitter
23 novembre 2021 à 21:10:40

bonjours, je n'arrive pas a la déclarer en mode statique dans le loop, pourriez vous m'aider
  • Partager sur Facebook
  • Partager sur Twitter
24 novembre 2021 à 8:20:14

Joli petit déterrage ^^

Pour déclarer une variable statique, il suffit juste d'ajouter le mot clef "static" devant.

Exemple :

void loop() {
 
    static int valPrecedente = 0;    // Variable statique
    int valActuelle;                 // Variable locale
 
    valActuelle = analogRead(A0);
 
    if ( valActuelle != valPrecedente ){
        Serial.println("val modifiée");
        valPrecedente = valActuelle;
    }
 
}



  • Partager sur Facebook
  • Partager sur Twitter