J'ai un petit projet à réaliser avec Arduino et je n'arrive pas à avancer parce que j'ai l'impression que mon code Arduino est faux mais je vois pas où :o . Le but étant d'utiliser la fonction attachInterrupt de sorte à afficher un message sur le monitor en fonction du bouton appuyé.
Or quand j’exécute mon code, et que j'appuie sur un bouton il m'affiche les deux messages des deux fonctions. pareil pour le deuxième bouton.
pour information j'ai une carte Arduino Uno.
Mon code arduino est :
const int buttonMarche = 3;
const int buttonArret=2;
La ça devrait fonctionner. Il peut y avoir du rebond sur les boutons, mais dans ce cas le même message sera affiché plusieurs fois.
Tes boutons sont cablés comment?
j'ai pour chaque bouton , une résistance de 10K et un condensateur de 20nF
y a des rebonds je veux bien, mais quand j'appuie sur le bouton qui doit m'afficher le message "c'est le bouton marche" il m'affiche les deux messages "c'est le bouton marche" et "c'est le bouton off" :o
Oui voilà, c'est exactement comme ça que j'ai câblé.
c'est pour ça que je n'arrive pas à comprendre pourquoi j'ai les deux fonctions qui s'exécutent à la fois x(
Tes résistances sont-elles suffisantes ? Le schéma de kamill te propose 10 kohms. Si tu mets beaucoup moins, il est possible que l'appui sur un bouton "tire" sur l'alim et que ce soit interprété comme une interruption.
Autre chose. Pourquoi ne pas simplifier ton code en détectant le font montant ("RISING") et éviter alors le test de l'état du bouton ?
hello
en suivant ta photo, la petit BP rond est bien cablé
le gros BP est mal cablé. les deux fils du BP arrivent sur la meme ligne de la bred board.
et tu as inversé la logique de cablage entre GND et +.
recable correctement le gros BP
les deux BP doivent établir un contact avec GND s'il sont enfoncés.
regarde le code ci joint et tu verras qu'en déclarant les entrées "pullup" tu peux t'éviter de mettre des résistances extérieures.
dans les fonctions d'interruptions, il n'est pas nécessaire de tester les BP puisque c'est un appui sur l'un d'eux qui à déclenché l'appel de l'isr d'interruption correspondante