1er) alumer une lampe avec un bouton si rien ne ce passe (nouveau appuis) elle s'étain au bous de 2 seconde
2eme) imaginons que on fait un appuis cour sur un bouton sa lance un void fonction et si on en fait mes si on font un long ~2seconde sa lance un void fonction différent
ludocraft:
2eme) imaginons que on fait un appuis cour sur un bouton sa lance un void et si on en fait mes si on font un long ~2seconde sa lance un void différent
Dans la première vous avez un exemple qui détecte la durée d’appui et dans la seconde directement la possibilité d’associer différentes fonctions pour un appui court ou appui long.
Le code étant dispo vous pouvez aussi étudier ces deux librairies, la première est un bon exemple d’usage de l’abstraction objet et la seconde un exemple sympa de machine à etat encapsulé en objet.
Notez que l’on ne dit pas un void, ça veut rien dire, void c’est un mot clé qui veut dire vide/sans objet/sans type précis. Utilisez le mot fonction qui est correct et fait pour cela.
je refait en fr mieux XD
"2eme) imaginons que on fait un appuis cour sur un bouton sa lance une voidfonction et si on en fait mes si on font un long ~2seconde sa lance un void fonction différent"
imaginons que on a 2 fonction void1 void2
appuie cour => void 1 fonction 1
appuie long => void 2 fonction 2
(j'ai tous ce qui faut dans ce que ma donner J-M-L)
Evidemment, ça bloque le code pendant l'appui sur le bouton (à cause du while)
Merci Lesept, je mets de côté.
N'étant pas familier avec la programmation, mes premières étaient en basic, j'évitais justement "while" à cause du côté bloquant. J'ai préféré utiliser la simplicité de la librairie.
J'avais des ratés avec simpleBouton, du coups je suis passé à l'autre solution proposée par Bricoleau qu'est boutonAction encore plus simple à utiliser, mais en double clic pour la deuxième fonction et là, plus de ratés.
avec oneButton, vous faites un truc du genre
(Tapé ici donc pas testé, à utiliser avec la console série ouverte à 115200 bauds et un bouton correctement câblé sur pin2 — bouton — GND)
#include <OneButton.h> // http://www.mathertel.de/Arduino/OneButtonLibrary.aspx
OneButton bouton(2, true); // sur pin 2 avec câblage pin2 -- bouton -- GND
void unClick() {
Serial.println(F("un click"));
}
void deuxClicks() {
Serial.println(F("deux clicks"));
}
void setup() {
Serial.begin(115200);
bouton.setDebounceTicks(50); // 50ms pour les rebonds
bouton.attachClick(unClick);
bouton.attachDoubleClick(deuxClicks);
}
void loop() {
bouton.tick();
// autre chose ici si ça ne bloque pas trop longtemps
}
La proposition de lesept fonctionne, mais dans mon cas, si on règle 1000 pour la longue période, l'opérateur doit appuyer au moins une seconde et si il n'a pas de chrono dans la tête, il y a des ratés, ou il attends plus longtemps avant de relâcher ... fastidieux.
Le double clic est plus sur en fin de compte, dans mon cas.