J'écris un lecteur mp3 qui écrit des informations sur un écran LCD, je voudrais le convertir en utilisant le clavier pour utiliser des boutons poussoirs mais je reçois constamment trop de touches. J'ai essayé de tirer vers le haut et le front descendant / montant, mais j'obtiens toujours le même résultat. Quelqu'un sait-il si c'est un problème connu ou est-ce que je fais juste quelque chose de mal? Oh, je fais aussi cela entièrement en C en utilisant le câblagePi.
12
if(digitalRead(data) && millis()-startTime > 10){
et définissez startTime chaque fois qu'il entre en boucle.Réponses:
Les boutons et commutateurs mécaniques peuvent souffrir d'un rebond du commutateur où ils basculent rapidement entre ouvert et fermé pendant plusieurs millisecondes.
Vous pouvez essayer de faire rebondir le bouton / commutateur dans le logiciel ou le matériel.
Probablement le plus simple des logiciels.
Si le niveau change (on à off, ou off à on) attendez x millisecondes et relisez le gpio. S'il est toujours dans le nouvel état, supposez qu'il s'agit d'une véritable transition. La valeur de x pourrait être quelque chose comme 20.
Pour les solutions matérielles, recherchez ce type de message
la source
Prenez le temps de lire le guide anti-rebond de Jack Ganssle . La première page illustre le problème en détail, et la seconde comment le traiter dans le matériel ou les logiciels. Il n'y a pas de méthode anti-rebond «parfaite», mais il y en a beaucoup de mauvaises!
C'est un problème que vous rencontrerez à plusieurs reprises si vous connectez un logiciel à des commutateurs, il vaut donc la peine de prendre le temps de le comprendre, et l'article de Jack est la manière la plus concise que j'ai vue de le faire.
la source
Dans les applications qui ont un ticker système, j'implémente généralement un registre à décalage.
Bien sûr, vous ne devez effectuer l'événement de pression de bouton que sur un front montant.
la source