Détection changement valeur analogique

Bonjour,

J’aimerai savoir si c’est possible de détecter un changement de la valeur analogique que l’on lit.
Un peu comme une interruption mais sur une broche analogique.

Voici un code que j’ai fait pour essayer mais cela ne marche pas ! Je m’en suis rendu compte après avoir testé mais ma valeur de pot-2 s’actualise en même temps que pot et du coup pot ne passera jamais en dessous.

int pot ;

void setup() {
  Serial.begin(9600);
}

void loop() {
  pot = analogRead(A0);
  Serial.print("valeur :\t");
  Serial.println(pot);
  delay(200);
  
if(pot < pot-2)||(pot > pot+2)){
    Serial.println("\n\nChangement ! \n\n");
  }
}

Merci d’avance pour votre aide et vos réponses :wink:

pour votre code il faut mémoriser la valeur précédente pour comparer à la nouvelle…

sinon il y a une fonction hardware qui permet de comparer une valeur analogique à une autre et déclencher un interruption en cas de dépassement

d’un point de vue hardware c’est un ampli op utilisé comme comparateur de tension. Un ampli op dispose typiquement de deux entrées, deux broches d’alimentation et une sortie. L’entrée notée e+ est dite non inverseuse tandis que l’entrée e- est dite inverseuse

Dans l’Atmel, cet Ampli Op va mettre sa sortie à HIGH quand la tension de l’entrée e+ est plus grande que celle de l’entrée e-

il y a même la librairie analogComp qui rend cela facile d’accès

Merci pour la réponse rapide :wink:

Mais en fait je voudrais faire ça complètement software c'est pour un projet et je ne peux pas mettre d'hardware dessus donc il faut que je trouve autre chose.

J-M-L:
pour votre code il faut mémoriser la valeur précédente pour comparer à la nouvelle...

Justement, c'est ce que je pensait mais je n'arrive pas à mémoriser la valeur précédente je ne vois pas comment faire. Si tu as une idée je suis preneur. :slight_smile:

le comparateur est intégré à votre arduino, il n'y a rien à rajouter...

oui j'ai une idée.. mais vous n'avez pas beaucoup cherché...

déclarez une seconde variable globale ou static dans la loop "int valeurPrecedente;" et assurez vous de mettre dedans l'ancienne valeur et comparez à la nouvelle.

C'est ce que j'avais fait avant mais ça ne marchait pas je viens de me rendre compte de mon erreur c'est que je faisait prendre la valeur du potentiomètre dans ma variable valeurPrecedente.

Désolé du dérangement pour si peu mais merci de m'avoir répondu rapidement :wink:

:slight_smile: :slight_smile: