[Arduino] Compter Combien De Fois On A Appuyé Sur Une Suite Boutons
Maybe your like
- Se souvenir de moi ?
- Retour sur Futura
- S'inscrire

- Forum
- Futura-Techno : les forums de l'informatique et des technologies
- Électronique
- [Programmation] [Arduino] compter combien de fois on a appuyé sur une suite boutons
Dernière
- Aller à la page:
- 08/07/2016, 10h46 #1 invitec8cd64cb
Date d'inscription janvier 1970 Messages 124 [Arduino] compter combien de fois on a appuyé sur une suite boutons
------Bonjour à tous. J'essaye d'écrire un programme Arduino qui compterait combien en fois on a appuyé sur une suite boutons. En fait il faudrait: Si le bouton 1 est pressé; Attendre que le bouton 2 soit pressé; Ajouter +1 a la variable compteur. Mais je ne sait pas comment faire. J'ai cherché, mais je n'ai rien trouvé... Pourriez-vous m'aider?
----- - 08/07/2016, 11h31 #2 invite1d577638
Date d'inscription janvier 1970 Messages 3 825 Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Salut, Les interruptions peuvent t'aider....! Voir aussi du coté des exemples fournis...
- 08/07/2016, 11h58 #3 invitec8cd64cb
Date d'inscription janvier 1970 Messages 124 Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
J'avais déjà vue cette explication mais je n'est pas très bien compris...
- 08/07/2016, 12h06 #4 invite1d577638
Date d'inscription janvier 1970 Messages 3 825 Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Une interruption est en gros un bout de code qui va s'exécuter dès qu'un évènement particulier est détecté. Il y a les interruptions internes, provoquées par le microcontrôleur, et les externes, liées à un changement d'état sur une entrée par exemple. Dans ton cas, ton bouton à surveiller doit déclencher une interruption externe sur l'entrée à laquelle il est relié. Le code lié à cette interruption aura pour rôle d'incrémenter ta variable... L'arrivée d'une interruption interrompt l'exécution "normale" du programme pour basculer sur le code de l’interruption. Une fois cette dernière traitée, le programme continue là où il s'était interrompu ! Après dans le cas d'un bouton, attention aux rebonds...! Tu as étudié les exemples fournis ?
- Aujourd'hui A voir en vidéo sur Futura
- 08/07/2016, 12h37 #5 invitec8cd64cb
Date d'inscription janvier 1970 Messages 124 Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Donc ça devrait donner cela? Code: const byte boutonUn = 2 ; const byte boutonDeux = 3 ; int compteur = 0 ; void setup (){ pinMode(boutonUn,INPUT_PULLUP); pinMode(boutonDeux,INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(boutonUn ),Ajout,RISING*); attachInterruot ( digitalPinToInterrupt ( boutonDeux) , Retrait, RISING); } void loop(){} void Ajout (){ attachInterrupt ( digitalPinToInterrupt ( boutonDeux), AjoutDeux, RISING); } void Retrait(){ attachInterrupt(digitalPinToInterrupt(boutonUn),RetraitDeux,RISING); } void AjoutDeux(){ compteur++; } void RetraitDeux(){ compteur--; }
Dernière modification par Antoane ; 08/07/2016 à 17h21. Motif: Ajout balises code
- 08/07/2016, 12h59 #6 invite1d577638
Date d'inscription janvier 1970 Messages 3 825 Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
A froid et sans connaitre le câblage, oui. Je ne sais plus s'il est nécessaire de mettre un return ou similaire en sortie de la sub d'interruption, faut tester...! Après attention ta boule loop ne fait rien !
- 08/07/2016, 13h53 #7 invitec8cd64cb
Date d'inscription janvier 1970 Messages 124 Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Merci pour l'aide. Je ne peut pas tester tout de suite. Je pourrais au plus tôt ce soir ou demains.
- 08/07/2016, 15h24 #8 invite1d577638
Date d'inscription janvier 1970 Messages 3 825 Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Après attention, ton code ne respecte pas tout à fait ta demande en #1... Tu vas devoir ajouter quelques conditions à ton code d'interruption !
- 08/07/2016, 16h47 #9 invitec8cd64cb
Date d'inscription janvier 1970 Messages 124 Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Envoyé par Yoruk
Après attention, ton code ne respecte pas tout à fait ta demande en #1... Tu vas devoir ajouter quelques conditions à ton code d'interruption ! C'est à dire? - 08/07/2016, 20h45 #10 maxpeigne Date d'inscription octobre 2010 Localisation Pas de Calais Âge 41 Messages 145
Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Envoyé par nathanmart
Si le bouton 1 est pressé; Attendre que le bouton 2 soit pressé; Ajouter +1 a la variable compteur. En gros tu comptes +1 lorsque tes 2 boutons sont appuyés? Dans ce cas c'est faisable sans interruption: Code: // constants won't change. They're used here to // set pin numbers: const int buttonPin1 = 2; // the number of the pushbutton pin const int buttonPin2 = 3; // the number of the pushbutton pin // variables will change: int compteur = 0; // variable compteur void setup() { // initialize the pushbutton pin as an input: pinMode(buttonPin1, INPUT); pinMode(buttonPin2, INPUT); } void loop() { // read the state of the pushbutton value: if (digitalRead(buttonPin1) && digitalRead(buttonPin2)) { compteur = compteur +1; } } - 08/07/2016, 22h55 #11 invitec8cd64cb
Date d'inscription janvier 1970 Messages 124 Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Non, il faut que sesoit quand le bouton 1 est allumé PUIS le bouton 2, et inversement.
- 11/07/2016, 08h53 #12 invite1d577638
Date d'inscription janvier 1970 Messages 3 825 Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Il te faut donc 2 conditions imbriquées Code: Si bouton 1 appuyé alors si bouton 2 appuyé alors incrémenter fin si
- 11/07/2016, 09h18 #13 Yvan_Delaserge Date d'inscription mars 2013 Localisation Aspretto Messages 3 093
Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Une manière efficace de programmer ce type de comportement est de créer ce que l'on appelle une machine à états. Dans ton cas, on définit 3 états numérotés 0, 1 et 2. Au démarrage du microcontrôleur, la machine est à l'état zéro. Si aucun des deux boutons n'est pressé, la machine reste dans l'état zéro. Si le bouton 1 est pressé, elle passe à l'état 1 Si elle est dans l'état 1 et que le bouton 2 est pressé elle passe à l'état 2. Il reste à fixer à quelles conditions on passe d'un état dans l'autre et ce que le microcontrôleur doit faire lors qu'il arrive dans chacun des états définis. Dans le cas de l'Arduino, une manière simple et pratique de créer une machine à états est l'instruction case. La boucle loop tourne en permanence. Si l'appui sur les boutons se fait par un opérateur humain, il est de durée suffisante pour pouvoir se passer des interruptions. L'utilisation de l'approche " machine à états" pourra probablement aussi dans le cas particulier, permettre de se passer de la gestion des rebonds des contacts.
Un civet, un plat de côtes et puis, glissez-moi une petite paupiette avec.( Lino Ventura)
- 11/07/2016, 10h09 #14 invite1d577638
Date d'inscription janvier 1970 Messages 3 825 Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Envoyé par Yvan_Delaserge
Une manière efficace de programmer ce type de comportement est de créer ce que l'on appelle une machine à états. C'est un grafcet en fait ? - 11/07/2016, 10h29 #15 Yvan_Delaserge Date d'inscription mars 2013 Localisation Aspretto Messages 3 093
Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Le principe est similaire à un grafcet. Voici un organigramme de la machine à états préconisée dans la présente application:
A l'allumage du microcontrôleur, on est à l'état E0. Si on appuie sur le bouton 2, on reste dans le même état. si on appuie sur le bouton 1, on passe dans l'état 1 et on y reste, quel que soit le nombre de fois qu'on appuie sur le bouton 1. Le bouton n'a donc pas besoin de traitement anti-rebond. Si on appuie sur le bouton 2, on passe à l'état 2 et c'est là que le processeur va accomplir la tâche demandée, puis il va directement à l'état 0, où il reste même si le bouton 2 est actionné un nombre quelconque de fois. Le bouton 2 n'a donc pas non plus besoin d'anti-rebond. Un civet, un plat de côtes et puis, glissez-moi une petite paupiette avec.( Lino Ventura)
- 11/07/2016, 10h49 #16 invitec8cd64cb
Date d'inscription janvier 1970 Messages 124 Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Envoyé par Yvan_Delaserge
Le principe est similaire à un grafcet. Voici un organigramme de la machine à états préconisée dans la présente application: Pièce jointe 318569 A l'allumage du microcontrôleur, on est à l'état E0. Si on appuie sur le bouton 2, on reste dans le même état. si on appuie sur le bouton 1, on passe dans l'état 1 et on y reste, quel que soit le nombre de fois qu'on appuie sur le bouton 1. Le bouton n'a donc pas besoin de traitement anti-rebond. Si on appuie sur le bouton 2, on passe à l'état 2 et c'est là que le processeur va accomplir la tâche demandée, puis il va directement à l'état 0, où il reste même si le bouton 2 est actionné un nombre quelconque de fois. Le bouton 2 n'a donc pas non plus besoin d'anti-rebond. Merci beaucoup Yvan_Delaserge. Je vais étudier ça.J'envoie un message dès que j'ai fait le programme. - 11/07/2016, 11h05 #17 mag1 Date d'inscription juin 2011 Âge 79 Messages 7 378
Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Bonjour, Pour info, un programme qui répond (je pense) à la question, en basic avec un petit picaxe Une boucle de trois lignes (vite fait). Code: #picaxe 08M2 ;nom des poussoirs symbol pous1=pinC.1 ;poussoir 1 sur broche C.1 symbol pous2=pinC.2 Do Do loop while pous1=0 ;pous1=1 si appuyé do loop while pous2=0 gosub tache loop tache: ; prog de la tâche return MM
Dernière modification par mag1 ; 11/07/2016 à 11h08.
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
- 11/07/2016, 11h23 #18 invitec8cd64cb
Date d'inscription janvier 1970 Messages 124 Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Envoyé par mag1
Bonjour, Pour info, un programme qui répond (je pense) à la question, en basic avec un petit picaxe Une boucle de trois lignes (vite fait). Code: #picaxe 08M2 ;nom des poussoirs symbol pous1=pinC.1 ;poussoir 1 sur broche C.1 symbol pous2=pinC.2 Do Do loop while pous1=0 ;pous1=1 si appuyé do loop while pous2=0 gosub tache loop tache: ; prog de la tâche return MM Le problème avec les picaxes, c'est que je n'y connais rien. Du coup, je ne peux pas le modifier ou l'améliorer... - 11/07/2016, 11h30 #19 mag1 Date d'inscription juin 2011 Âge 79 Messages 7 378
Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Envoyé par nathanmart
Le problème avec les picaxes, c'est que je n'y connais rien. Du coup, je ne peux pas le modifier ou l'améliorer... Si le problème est là....c'est plus simple que tout le reste http://electromag1.wifeo.com/les-pic...leur-basic.php MM Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
- 11/07/2016, 12h07 #20 Yvan_Delaserge Date d'inscription mars 2013 Localisation Aspretto Messages 3 093
Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
ça, ça devrait le faire... Code: const byte boutonUn = 2 ; const byte boutonDeux = 3 ; int compteur = 0 ; int etat = 0 ; void setup (){ pinMode(boutonUn,INPUT_PULLUP); pinMode(boutonDeux,INPUT_PULLUP); } void loop(){ switch (etat) { case 0: if (digitalRead(boutonUn) == LOW) { etat=1; } break; case 1: if (digitalRead(boutonDeux) == LOW) { etat=2; } break; case 2: compteur++; etat=0; break; } }
Un civet, un plat de côtes et puis, glissez-moi une petite paupiette avec.( Lino Ventura)
- 11/07/2016, 13h33 #21 Antoane Responsable technique Date d'inscription août 2007 Localisation Kiel Âge 34 Messages 19 441
Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Bonjour, Si je ne m'abuse:
Envoyé par Yoruk
C'est un grafcet en fait ? Le grafcet est un langage de programmation (comme le C, Java...), la machine d'état permet de représenter un système (uniquement s'il est représentable par une machine d'état). Le système peut se trouver dans plusieurs "boites d'actions" différentes d'un grafcet (e.g. en sortie d'une bifurcation OU), mais dans un unique état de machine d'état. C'est un détail, cf. le forum d'info pour plus de rigueur. Pour info, un programme qui répond (je pense) à la question, en basic avec un petit picaxe Une boucle de trois lignes (vite fait). En même temps, 2 boucles imbriquées, c'est quelques lignes dans quasiment tous les langages de programmation
Le programme donné par Yvan, pour arduino, code une vraie machine à états, d'où sa relative "complexité". Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.
- 11/07/2016, 13h37 #22 mag1 Date d'inscription juin 2011 Âge 79 Messages 7 378
Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Envoyé par Antoane
En même temps, 2 boucles imbriquées, c'est quelques lignes dans quasiment tous les langages de programmation
Oui, bien sûr, c'est plus pour la méthode (simple) que pour le matériel, qui peut être n'importe quoi, j'aurais dû le préciser MM Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
- 11/07/2016, 13h53 #23 antek Date d'inscription février 2015 Localisation haute loire Âge 71 Messages 17 641
Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Envoyé par Antoane
Le grafcet est un langage de programmation (comme le C, Java...), . . . Le grafcet est d'abord un outil de description et d'analyse. Un fabricant a appelé "grafcet" un langage pour API. - 11/07/2016, 14h00 #24 Yvan_Delaserge Date d'inscription mars 2013 Localisation Aspretto Messages 3 093
Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Si on appuie sur le bouton 1, il passe dans la seconde boucle, mais quel serait le comportement si on appuie de nouveau sur le bouton 1, par exemple en cas de rebond du contact 1? Il retourne dans la première boucle? Ou bien est-ce qu'il ne lit plus que le bouton 2 lorsqu'il est dans la deuxième boucle? Et donc qu'il reste dans cette dernière?
Un civet, un plat de côtes et puis, glissez-moi une petite paupiette avec.( Lino Ventura)
- 11/07/2016, 14h48 #25 mag1 Date d'inscription juin 2011 Âge 79 Messages 7 378
Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Non, le rebond, on s'en fiche, c'est le premier front qui déclenche la sortie de chaque boucle Un programme est a sens unique, il ne revient pas en arrière (enfin, pas tout seul) MM
Dernière modification par mag1 ; 11/07/2016 à 14h50.
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
- 11/07/2016, 15h35 #26 invite1d577638
Date d'inscription janvier 1970 Messages 3 825 Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Envoyé par antek
Le grafcet est d'abord un outil de description et d'analyse. Un fabricant a appelé "grafcet" un langage pour API. J'ignorais que c'était aussi un langage de programmation ! C'est source de confusion...!
- 11/07/2016, 15h45 #27 invitec8cd64cb
Date d'inscription janvier 1970 Messages 124 Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Envoyé par Yvan_Delaserge
ça, ça devrait le faire... Code: const byte boutonUn = 2 ; const byte boutonDeux = 3 ; int compteur = 0 ; int etat = 0 ; void setup (){ pinMode(boutonUn,INPUT_PULLUP); pinMode(boutonDeux,INPUT_PULLUP); } void loop(){ switch (etat) { case 0: if (digitalRead(boutonUn) == LOW) { etat=1; } break; case 1: if (digitalRead(boutonDeux) == LOW) { etat=2; } break; case 2: compteur++; etat=0; break; } } Merci pour ce programme. Il faut cependant que je l'améliore. Là,il ne fait qu'incrémenter une variable lors de l'appui du bouton 1 puis 2. Mais mon but est aussi de pouvoir faire l'inverse,lorsque le bouton 2 puis 1 sont pressés , dé-crémenter (je sait pas si ça existe comme mot). De ce fait, ça rajoute beaucoup de contraintes. - 11/07/2016, 16h00 #28 mag1 Date d'inscription juin 2011 Âge 79 Messages 7 378
Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Et il n'y a pas un délai entre les appuis pour resetter le système? des fois... Et si on fait 1-2-1 ou 1-2-2-1 , ça fait quoi ? MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
- 11/07/2016, 16h09 #29 Yvan_Delaserge Date d'inscription mars 2013 Localisation Aspretto Messages 3 093
Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
L'organigramme de la machine à états doit être modifié comme ceci:
On ajoute deux états supplémentaires E3 et E4: le fonctionnement est symétrique par rapport au premier organigramme. Lorsqu'on arrive à l'état E4, on décrémente le compteur et on retourne à l'état d'attente E0. Mais dans cette situation, il faudra prendre soin de s'occuper des rebonds des contacts, si on veut un fonctionnement stable. @ mag1: Comment coderais-tu ça avec un picaxe et des boucles? Même question pour les combinaisons 1-2-1 ou 1-2-2-1? Dernière modification par Yvan_Delaserge ; 11/07/2016 à 16h11.
Un civet, un plat de côtes et puis, glissez-moi une petite paupiette avec.( Lino Ventura)
- 11/07/2016, 16h28 #30 Antoane Responsable technique Date d'inscription août 2007 Localisation Kiel Âge 34 Messages 19 441
Re : [Arduino] compter combien de fois on a appuyé sur une suite boutons
Envoyé par Yoruk
J'ignorais que c'était aussi un langage de programmation ! C'est source de confusion...!
Non, j'ignorais que c'était avant tout un outil de description et d'analyse
Merci. Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.
Dernière
- Aller à la page:
Discussions similaires
-
[Programmation] programmation arduino + schiel LCD/boutons
Par invitee7174614 dans le forum Électronique Réponses: 0 Dernier message: 29/12/2015, 13h07 -
Gestion boutons arduino
Par invite0f178c4b dans le forum Électronique Réponses: 10 Dernier message: 21/10/2013, 19h04 -
[Blanc] Combien de fois par heure en moyenne un frigo tourne t il ?
Par invite2ed708f5 dans le forum Dépannage Réponses: 7 Dernier message: 13/02/2008, 20h21 -
Combien de fois 1 clé de cryptage est plus forte qu'une autre?
Par invite29f30bce dans le forum Internet - Réseau - Sécurité générale Réponses: 2 Dernier message: 16/12/2007, 23h26
Tag » Arduino Compter Le Temps D Appui D Un Bouton
-
Calcul Temps Entre Chaque Appuie De Bouton - Arduino Forum
-
---Appui Long Sur Bouton--- - Français - Arduino Forum
-
Exécution De Fonctions Selon Nombre Appui Sur Bouton Poussoir
-
Calculer Le Temps Entre Deux états - Français - Arduino Forum
-
[Arduino] Calcul Du Temps Qu'un Bp Est Appuyé - OpenClassrooms
-
Arduino : Comment Gérer Le Temps
-
Un Simple Bouton - Arduino : Premiers Pas En Informatique ...
-
Arduino UNO Etc : Réagir à L'appui Sur Un Bouton Poussoir (front ...
-
Arduino Cours Sur Le Temps Avec Delay Et Millis - Oui Are Makers
-
Compter Le Nombre D'appuis Sur Un Bouton Poussoir - Mon Club Elec
-
Tout Faire Avec Seulement Deux B.P. - Robot Maker
-
Comment Gérer Les Boutons - DIego Yourself
-
Gérer Un Bouton Poussoir On / Off Sur Arduino - BeanyOverTech
-
Arduino : Gestion De Bouton Pour Un Compteur