Regardez le tutoriel vidéo

Les boutons-poussoirs et interrupteurs sont entrées numériques et sont largement utilisés dans les projets électroniques comme la plupart des systèmes doivent répondre aux commandes de l’utilisateur ou des capteurs. La lecture d’un bouton-poussoir est très utile car un bouton-poussoir est largement utilisé et peut aussi représenter toute une variété des appareils numériques dans le monde réel comme des interrupteurs, capteurs de limite, des commutateurs de niveau, détecteurs de proximité, les claviers (une combinaison de commutateurs), etc.

Dans ce cas, nous allons utiliser la forme la plus simple du capteur: un commutateur à bouton-poussoir. Dans ce tutoriel, nous allons apprendre les fonctions Arduino pour lire un commutateur connecté à une broche d’entrée numérique.

Résistance de pull-up

La connexion d’un interrupteur ou un bouton-poussoir à l’Arduino Uno est simple, tous ce que nous avons besoin c’est une résistance pull-up ou pull-down.

          

Figure 1: Un interrupteur avec une résistance pull-up  Figure 2: Un interrupteur avec une résistance pull-down

La résistance pull-up ou pull-down est très importante, s’il n’y a pas de résistance, il sera difficile de déterminer l’état de la broche, on appelle cela une broche flottante. Cette résistance sert à « tirer » (« to pull » en anglais) le potentiel vers le haut (up) ou vers le bas (down).

Disons que la broche d’arduino est configurée comme une entrée. S’il n’y a rien relié à la broche et le programme lit l’état de la broche, sera-elle à l’état haut (tiré à VCC) ou bas (tiré à la masse)? Il est difficile de dire. Mais avec une résistance reliée à VCC (pull-up) comme dans la figure 1, ou reliée à la masse (pull-down) comme sur la figure 2, veillera à ce que la broche est soit en état haut ou bas.

Les résistances pull-up sont les plus fréquentes nous allons donc nous concentrer sur les pull-up. Comme le montre la figure 2, si le bouton-poussoir est ouvert, le D4 d’entrée sera élevée (+ 5V) et lorsque le bouton-poussoir est fermé, l’entrée D4 sera faible que l’ensemble courant passera de + 5V à la terre. S’il n’y avait pas de résistance, il aurait pu être un court-circuit. En général, une valeur de 10KΩ pourrait être utilisé.

Figure 1: Un bouton poussoir relié à la broche D4 avec la résistance pull-up externe et une LED connectée à D7

Figure 2: Schéma électrique d’un bouton-poussoir connecté à la broche D4 avec la résistance pull-up externe et une LED connectée à la broche D7

Au lieu d’utiliser des résistances pull-up, les résistances pull-up internes peuvent être activés dans le logiciel si des résistances externes ne vont pas être utilisé comme indiqué sur la figure 3 et 4 ci-dessous.

Figure 3: un bouton-poussoir relié à la broche D4 avec la résistance interne de pull-up et une LED connectée à D7

Figure 4: Schéma électrique d’un bouton-poussoir relié à la broche D4 avec résistance interne pull-up et une LED connectée connectée à la broche D7

Filtrer les rebonds

Les boutons ne sont pas des systèmes mécaniques parfaits. Du coup, lorsqu’un appui est fait dessus, le signal ne passe pas immédiatement et proprement de 5V à 0V comme illustré dans la figure 5 ci-dessous. En l’espace de quelques millisecondes, le signal va « sauter » entre 5V et 0V plusieurs fois avant de se stabiliser comme illustré dans la figure 6 ci-dessous. Il se passe le même phénomène lorsque l’utilisateur relâche le bouton. Ce genre d’effet n’est pas désirable, car il peut engendrer des parasites au sein de votre programme (si vous voulez détecter un appui, les rebonds vont vous en générer une dizaine en quelques millisecondes, ce qui peut-être très gênant dans le cas d’un compteur par exemple).

    

Figure 5: Opération d’un bouton imaginaire sans rebonds.       Figure 6: Opération d’un bouton réel avec rebonds

Il y a plusieurs façons cela peut être éliminé, on peut utiliser un condensateur en parallèle avec le bouton. Ce composant servira ici « d’amortisseur » qui absorbera les rebonds, on peut l’éliminé aussi dans le logiciel, on peut utiliser un algorithme de comptage où l’interrupteur est lu périodiquement (par exemple tous les 1 ms) et il ne peut être considéré comme ayant changé d’état si elle a été dans le nouvel état pendant un certain nombre d’échantillons successifs (de par exemple 10), par laquelle il est considéré comme ayant réglé.

L’autre méthode et la plus facile est de lire un interrupteur puis après un court délai, par exemple après 10 ms, le relire, si l’état de l’interrupteur est toujours le même, l’interrupteur est considéré comme ayant réglé dans cet état.

Sketch avec une résistance pull-up externe

Cet simple sketch va allumer une LED externe connecté à une broche numérique 7 d’Arduino pendant 5 secondes lorsque le bouton-poussoir est appuyé. Après 5 secondes, la LED va s’éteindre à nouveau. Une résistance pull-up externe est utilisé comme sur la figure 2.

Pour surveiller l’état d’un bouton poussoir/interrupteur ou tout capteur, il y a une nouvelle instruction Arduino que nous allons apprendre: la fonction digitalRead(). digitalRead() vérifie s’il y a une tension (+ 5V) appliquée à la broche que vous spécifiez entre parenthèses, et renvoie une valeur de haute (HIGH) ou basse (LOW), en fonction de ses conclusions et le stocke dans la variable value que nous avons déclarée.

L’autre déclaration très importante que nous avons présenté ici, est la déclaration IF. L’instruction IF est l’un d’instructions la plus importante dans un langage de programmation, car il permet à un ordinateur comme un Arduino de prendre des décisions. Après le mot-clé IF, vous devez écrire une «question» entre les parenthèses dans notre exemple, de vérifier si la valeur est BAS (LOW) (bouton est appuyé), et si la «réponse», ou le résultat, est vrai, le premier bloc de code sera exécuté ; sinon, le bloc de code après ELSE sera exécuté. Vous devez remarquer que le symbole == est très différent du symbole =. Le premier est utilisé lorsque deux entités sont comparées, et retourne vrai ou faux; le dernier attribue une valeur à une constante ou une variable.

Nous avons utilisé une petite pause de 10 ms comme anti-rebond et vérifier à nouveau, si après ce court délai, le bouton se trouve encore être pressé, alors nous savons à coup sûr que le bouton a été pressé et il a réglé.

Sketch avec une résistance pull-up interne

Maintenant, laissez-nous écrire le même Sketch comme ci-dessus mais en utilisant une résistance pull-up interne comme sur la figure 4.

Vous pouvez télécharger les fichiers de projet complet (projet Arduino et Proteus) ci-dessous ici. Tous les fichiers sont compressés, vous aurez besoin de les décompresser (Télécharger une version gratuite de l’utilitaire Winzip pour décompresser les fichiers).
Télécharger: Pushbutton_Arduino

Télécharger: Arduino_Pushbutton Proteus

(Visited 1 248 times, 1 visits today)