la Fonction : Debounce


Lorsque l'on appuie sur un bouton poussoir par exemple, il se produit un phénomène de rebond, c'est à dire qu'entre le moment où l'on appuie sur le bouton et qu'on le relâche, la carte qui agit beaucoup plus vite qu'un être humain, considère le bouton à plusieurs états à la fois ouvert et fermé. En effet, le bouton n'est ni totalement poussé, ni totalement relâché.

 

Pour éviter ce désagrément, on peut utiliser une solution matérielle avec un condensateur et une résistance et/ou utiliser la fonction Debounce qui va ignorer les changements soudains d'état, et détecter ce changement par rapport à un timer.

 

I. Montage anti-rebond matériel


L'une des méthodes pour éliminer les effets de Rebonds dans un montage avec un bouton poussoir est de faire appel dans votre montage à deux composants supplémentaires, que sont : une résistance en pull-up et un condensateur.

 

En effet, la résistance en pull-up (résistance de tirage) dont le nom vient de sa position dans le schéma, c'est-à-dire brancher au VCC (le 5V). Elle serait branchée sur le Gnd, elle porterait le nom de résistance en pull-down.

 

La résistance en pull-up a pour fonction de maintenir le circuit à l'état haut, et donc de forcer la carte Arduino à considérer le bouton dans un état, pour éviter tout flottement ou rebonds.

 

Et le condensateur quant à lui va se charger progressivement via la résistance, et va se décharger immédiatement lors de l'appui sur le bouton, ne pouvant pas se recharger instantanément, il n'y aura pas d'effet de rebonds.

Notes de montage : Ce montage est constitué d'un bouton poussoir relié d'une part au 5V via une résistance de 10kΩ, puis sur la broche adjacente à celle branchée sur le 5V, on branche le ground de l'Arduino, puis on branche sur la broche du bouton poussoir située en face de celle reliée à la résistance et au ground, la Pin 4 de l'Arduino.

 

Et finalement on branche un condensateur de 100 nF en parallèle au bouton poussoir, c'est à dire branché directement à la résistance en pull-up d'un côté et au ground de l'autre côté.

 

Il nous reste plus que la Led et sa résistance à brancher sur le ground et sur une broche de l'Arduino, ou comme ici sur mon schéma, branchée sans résistance à la broche 13 de l'Arduino, celle-ci contenant déjà une résistance.

II. Fonction Debounce, anti-rebond logiciel


Une autre méthode pour éviter les effet "rebonds" est d'utiliser dans votre programme la fonction Debounce qui va détecter et ignorer les changements d'états soudain et détecter ce changement par rapport au dernier état connu du bouton.

Notes de montage : Ce montage très simple est constitué d'un bouton poussoir relié d'une part au 5V de l'Arduino, puis sur la broche adjacente à celle branchée sur le 5V, on branche une résistance de 10kΩ, elle-même reliée au ground de l'Arduino, et finalement on branche sur la broche du bouton poussoir située en face de celle reliée à la résistance et au ground, la Pin 4 de l'Arduino.

 

Précision : nous utilisons la led interne de l'Arduino connectée à la Pin 13, comme led témoin. Pas besoin de led ou de résistance supplémentaire.

La composition du code est la suivante :

ce programme et ses explications sont disponibles en téléchargement ici : sur Mega.

Sources


Rappel :


les images présentent appartiennent au Domaine public et sont l’œuvre de Peggy_Marco sur le site Pixabay : https://pixabay.com/fr/users/Peggy_Marco-1553824/   ou proviennent du projet Fritzing : http://fritzing.org/home/