Go Down

Topic: [Partage] Boutons Poussoirs (Read 21567 times) previous topic - next topic

schlam

Merci de votre réponse.
je fonce voir voir tuto !

J-M-L

#61
Sep 18, 2020, 12:15 pm Last Edit: Sep 18, 2020, 12:16 pm by J-M-L
Merci de votre réponse.
je fonce voir voir tuto !
la machine à état devrait ressembler à cela:


je vous laisse essayer de coder en appliquant le tuto
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

bricoleau

Les boutons poussoir, ça a l'air tout bête au départ, et pourtant...

Avant même de parler lignes de code, peu importe la bibliothèque utilisée, il faut se poser deux secondes pour réfléchir à ton besoin.

ce que je cherche :

appui bouton1-->action 1
appui bouton2-->action 2
appui bouton1 et bouton2-->action 3
Cette description est trop... humaine et naïve !  :)

L'arduino détecte un appui bouton avec une précision temporelle de quelques microsecondes.

Es-tu vraiment en mesure d'appuyer sur les deux boutons "simultanément", c'est-à-dire en moins de quelques millionièmes de secondes ?
Si oui, tu dois être à ranger dans la catégorie cyborg et non, je ne m'appelle pas Sarah Connor :)

Bref tout ça pour confirmer ce qu'indique JML : il faut introduire une notion de délai maximum entre les appuis sur les deux boutons.
Délai à ajuster selon les capacité psychomotrices du "pousseur"...

Prenons par exemple 1/2 seconde. Cela veut dire que quand l'arduino détecte un appui bouton, il doit attendre 500 ms pour savoir si l'autre bouton est enfoncé, et décider de quelle action lancer.

C'est là que l'on commence à prendre une feuille blanche, faire des patatoïdes pour réfléchir à l'état du système à un instant t.

Jusqu'à répondre à des questions auxquelles tu n'avais pas pensé au départ.

Par exemple : que doit-il se passer en cas de double clic sur le bouton1 immédiatement suivi d'un clic sur le bouton2?
Faut-il agir comme s'il n'y avait qu'un appui simultané BP1 & BP2 ?
Ou bien faut-il enchaîner une action BP1 seul et une action BP1 & BP2 ?
Et dans ce cas, l'action BP1 seul est déclenchée quand ?
 :smiley-twist:

JFF76

#63
Nov 01, 2020, 10:41 am Last Edit: Nov 01, 2020, 10:46 am by JFF76
Un karma de plus pour te remercier, du beau boulot !  :)

philguen

Merci beaucoup pour cette librairie.

Il y a un mois, je n'avais jamais vu une carte arduino et à 72 ans pas facile de s'y mettre.

J'aimerais utiliser cette librairie pour gérer 8 boutons.... plutôt que de définir 8 fois un bouton, est-ce qu'il ne serait pas plus aisé de permettre l'indicage.

Je vais regarder votre travail dans la journée

Cordialement

Philippe

J-M-L

#65
Jan 22, 2021, 10:25 am Last Edit: Jan 22, 2021, 12:11 pm by J-M-L
J'aimerais utiliser cette librairie pour gérer 8 boutons.... plutôt que de définir 8 fois un bouton, est-ce qu'il ne serait pas plus aisé de permettre l'indicage.
Bonjour Philippe, bravo pour l'énergie investie - il n'y a pas d'âge pour commencer ;)

Concernant votre question, vous pouvez créer un tableau de SimpleBouton et ça vous donnera "l'indiçage" dont vous parlez.

Par exemple ici un tableau de 4 boutons connectés respectivement sur les pins 3,4,7 et 11
Code: [Select]
simpleBouton mesBoutons[] = {{3}, {4}, {7}, {11}};
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

philguen

rien de plus simple ... c'est parfait ... je vais commencer à apprence ca cet après-midi

Un énorme merci pour cette réponse pleine de courtoisie et trè réactive.

Je ne manquerai pas de faire appel à vos connaissances

Bonne fin de journée

Philippe

J-M-L

#67
Jan 22, 2021, 12:19 pm Last Edit: Jan 22, 2021, 12:20 pm by J-M-L
rien de plus simple ... c'est parfait ... je vais commencer à apprence ca cet après-midi
voici un petit bout de code pour commencer:
Code: [Select]
#include <simpleBouton.h>
simpleBouton mesBoutons[] = {{3}, {4}, {7}, {11}};
const byte nombreDeBoutons = sizeof mesBoutons / sizeof mesBoutons[0];

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

void loop() {
  for (byte indiceBouton = 0; indiceBouton < nombreDeBoutons; indiceBouton++) {
    mesBoutons[indiceBouton].actualiser();    // on met à jour ce bouton
    if (mesBoutons[indiceBouton].vientDEtreEnfonce()) { // on teste l'appui
      Serial.print(F("APPUI   BOUTON: "));
      Serial.println(indiceBouton);
    }
    if (mesBoutons[indiceBouton].vientDEtreRelache()) { // on teste le relâchement
      Serial.print(F("RELACHE BOUTON: "));
      Serial.println(indiceBouton);
    }
  }
}
le moniteur série (ouvert à 115200 bauds) affichera les appuis et relâches des boutons avec leur indice
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

philguen


Go Up