Ceci est une ancienne révision du document !
Les broches digitales de l'Arduino peuvent être indifféremment configurées comme des entrées ou des sorties.
Remarque: La majorité des microcontrôleurs Atmega permettent de configurer de la même manière leurs broches analogiques.
Par défaut les broches de l'Atmega sont déclarées en entrées. Il n'est donc pas nécessaire d'explicitement les déclarer en entrées via l'appel de la fonction pinMode(). Les broches en entrées sont dites en état d'haute impédance. Une façon d'expliquer ça est de dire que dans cet état, les broches ne consomme qu'une tres faible partie du circuit qu'elles échantillonnent. La haute impédance équivaut à une résistance de 100 méga Ohm devant la broche. En haute impédance, un très faible arrivée de courant peut faire basculer l’état de la broche. Cela peut être intéressant pour mettre ne œuvre un senseur capacitif ou lire une photodiode.
Cela veut dire toutefois que des broches configurées en entrées et n'étant reliées à aucun circuit changeront d'état de façon apparemment aléatoire en fonction du bruit électrique de l'environnement ou en se comportant comme des condensateurs avec les broches les plus proches.
Il est souvent utile de forcer une broche en entrée dans un état connu lorsqu'aucune entrée ne se produit. On ajoute alors une résistance de rappel au plus (pullup) ou de rappel au moins (pulldown). Une résistance de valeur de 10Kohm est habituellement utilisée.
Il est également possible d'activer les résistances de pullup (de 20 KOhm) intégrées à l'Atmega de façon logicielle:
pinMode(pin, INPUT); // définit la broche numéro pin en entrée digitalWrite(pin, HIGH); // active la résistance de pullup
Lorsque elle est activée, la résistance de pullup peut fournir un faible courant à une LED connectée sur une broche configurée en entrée. Si dans un projet, une LED semble fonctionner mais très faiblement, c'est que le programmeur a oublié de configurer la broche en sortie via l'appel a la fonction pinMode().
Les résistances de pullup sont contrôlées par le même registre que celui qui détermine si les broches sont à l’état HAUT ou BAS. Par conséquent une broche configurée pour avoir la résistance de pullup lorsqu'elle est en entrée sera configurée a l'état HAUT si elle est basculée en sortie via la fonction pinMode(). Inversement une broche configurée en sortie et sur laquelle un état HAUT est écrit se retrouvera en entrée avec la résistance de pullup active si pinMode() est appelée et que la broche et reconfigurée en entrée.
La broche 13 est souvent plus difficile à utiliser directement en entrée. Cela est du au fait que sur la majorité des cartes Arduino une LED et une résistance ont été ajoutés directement derrière la broche 13. Si la résistance de pullup est activée sur cette broche, la tension plafonne à 1,7V au lieu de 5V attendus. La LED et la résistance ont pour effet d'abaisser la tension à l'entrée de la broche 13, elle retourne systématiquement un état BAS. Pour utiliser la broche 13 en tant qu'entrée il faudra ajouter une résistance de pulldown.
Les broches configurées en sortie sont dans un état dit de basse impédance. Cela veut dire qu'elles sont en mesure de fournir un courant conséquent à d'autres circuits. Les broches de l'Atmega peuvent fournir ou absorber un courant de 40mA en provenance du circuit ou du composant connecté. C'est suffisant pour faire briller une LED ou faire fonctionner des capteurs mais c'est insuffisant pour actionner des relais, des solénoïdes ou des moteurs.
Des courts circuits entre les broches de l'Arduino ou tenter de faire circuler des courants élevés peuvent détruire le transistor de sortie de la broche ou détruire le microcontrôleur. C'est pourquoi il est recommandé d'insérer des résistances (470 Ohm ou 1 KOhm) entre la broche et le circuit/composant afin de limiter le courant a moins que le courant maximum soit requis pour une utilisation particulière.