Cet article précise comment utiliser les entrées numériques en y connectant un bouton poussoir. Il introduit le concept de résistance pull up et décrit comment utiliser les résistances pull up internes au microcontrôleur.
Entrées numériques et résistance pull-up
Entrées numériques et résistance pull-up (1)
.
Par :
DIFFICULTÉ :★☆☆
Lorsque l’on utilise les entrées numériques de l’Arduino, celles que l’on peut lire par l’instruction digitalRead(...)
, certains principes de base doivent être pris en compte.
La présentation générale des entrées sorties de l’Arduino fait l’objet de l’article de Jean-Luc : Les entrées sorties de l’Arduino.
Les images suivantes sont adaptées des exemples présentés dans www.arduino.cc.
Un premier exemple
À titre d’exemple, considérons la connexion d’un bouton poussoir à une entrée numérique de l’Arduino. On pourrait penser qu’il suffit de connecter un poussoir comme suit :
Lorsque le bouton est pressé, l’entrée est à 5 V, mais lorsque le bouton n’est pas pressé, elle n’est pas définie car elle est "en l’air". Les entrées du microcontrôleur équipant l’Arduino sont très sensibles et elles réagissent à la tension qui leur est appliquée. En conséquence, l’entrée laissée en l’air peut avoir n’importe quelle valeur comprise entre 0 et 5 V et être interprétée comme un LOW ou un HIGH par l’instruction digitalRead(...)
.
Résistance pull down
Pour fixer la tension lorsque le bouton n’est pas pressé, on insère une résistance pull down (résistance de tirage vers le bas) entre l’entrée et la masse (GND) dont le rôle est d’assurer que l’entrée est à 0 V lorsque le poussoir n’est pas pressé.
Lorsque le poussoir est pressé, un courant égal à 5 V / R circule dans la résistance. Pour une alimentation de 5 V, une bonne valeur pour R est d’au moins 4.7 Kilo-Ohm, le courant sera alors de 1.1 mA.
Résistance pull up
Pour des raisons liées aux technologies des circuits logiques, les électroniciens préfèrent utiliser une résistance pull up (résistance de tirage vers le haut) entre l’entrée et l’alimentation (5 V dans le schéma ci-après) et connecter le poussoir comme suit.
La résistance pull up doit aussi avoir une valeur d’au moins 4.7 Kilo-Ohm. Le raisonnement est le même que pour la résistance pull down, lorsque le bouton est pressé, l’entrée est à 0 V et un courant de 1.1 mA circule dans la résistance. Lorsque le bouton n’est pas pressé, l’entrée est à 5 V et il ne circule aucun courant dans la résistance. Dans le programme, il faut inverser le résultat retourné par digitalRead(...)
comme suit pour tester que le bouton est pressé :
if (digitalRead (2) == LOW)
{
// Actions à faire lorsque le bouton est pressé.
...
}
Pour faciliter la compréhension de cet exemple, le numéro de la pin est codé en dur, la bonne pratique serait de définir une constante avec un nom significatif comme par exemple : int pinBouton = 2;
Résistance pull up intégrée au microcontrôleur
Les résistances pull up sont très communes en électronique numérique, raison pour laquelle le microcontrôleur qui équipe l’Arduino dispose de résistances pull up internes qui évitent l’utilisation de résistances externes. Ces résistances internes ont une valeur comprise entre 20 et 50 Kilo-Ohm, certes plus élevée que la valeur recommandée pour une résistance externe, mais suffisante. Le schéma ci-après illustre le câblage du poussoir sans résistance pull up externe, la résistance pull up interne étant représentée en traitillé et à l’intérieur de la carte Arduino,
Pour activer la résistance pull up interne d’une entrée, par exemple la no 2, il suffit d’écrire, dans la fonction setup
:
pinMode (2, INPUT_PULLUP);
à la place de :
pinMode (2, INPUT);
Le test de l’état du bouton s’effectue de la même manière qu’avec une pull up externe.
En se basant sur cet exemple, nous verrons dans un autre article comment connecter un ILS ou une détection de présence aux entrées numériques de l’Arduino.