Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
dev:arduino:uno:configurer-entrees-sorties [2014/02/27 21:33] – modification externe 127.0.0.1 | dev:arduino:uno:configurer-entrees-sorties [2021/02/01 21:51] (Version actuelle) – modification externe 127.0.0.1 |
---|
| {{tag>dev port arduino}} |
| |
====== Configuration des entrées-sorties numériques ====== | ====== Configuration des entrées-sorties numériques ====== |
| |
Les broches digitales de l'Arduino peuvent être indifféremment configurées comme des entrées ou des sorties. | Les broches digitales du port parallèle de l'Arduino peuvent être indépendamment configurées comme des entrées ou des sorties. C'est la fonction **pinMode()** qui va permettre de configurer chaque ligne du port. |
| |
Remarque: La majorité des microcontrôleurs Atmega permettent de configurer de la même manière leurs broches analogiques. | <note> |
| La majorité des microcontrôleurs Atmega permettent de configurer de la même manière leurs broches analogiques. |
| </note> |
| |
===== Propriétés des broches configurées en entrée ===== | ===== Les constantes ===== |
| |
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.\\ | Pour la configuration des entrées sorties deux constantes sont définies **INPUT** et **OUTPUT**. L'une d'entre elles sera fournie en paramètre effectif à la fonction **pinMode()** après le numéro du port. Les constantes **HIGH** et **LOW** seront également utilisées pour la configuration des ports. |
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. | |
| ===== Configuration en sortie ===== |
| |
| Lorsqu'une ligne du port parallèle est configurée en sortie, le fait de lui attribuer une valeur HIGH lui fait générer une tension proche de la tension d'alimentation du microcontrôleur (5V) sauf si la charge consomme davantage de 40mA. |
| |
| <code c> |
| void setup() |
| { |
| pinMode(broche2, OUTPUT); |
| digitalWrite(broche2, HIGH); |
| } |
| </code> |
| |
| Si le port est configuré en sortie et qu'il est placé a l’état LOW, il génère une tension proche de la masse. Comme pour l’état HIGH, il ne faut pas que la ligne soit surchargée, c-a-d contrainte d'absorber plus de 40mA.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. |
| |
| |
| ===== Configuration en entrée ===== |
| |
| **Par défaut** les lignes du port parallèle 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()**. Sur un broche en entrée le microcontrôleur lira un niveau logique LOW pour toute tension inférieure à 2V et un niveau HIGH pour toute tension supérieure à 3V (la bande entre 2V et 3V étant indéterminée en TTL, le circuit ne doit pas présenter de tension dans cette zone). |
| |
| 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 très faible partie du courant de la charge 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. Pour éviter cela il est possible d'activer la résistance interne de rappel au plus. |
| |
| |
===== Résistance de rappel ===== | ===== Résistance de rappel ===== |
| |
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 souvent utile de forcer une broche en entrée dans un état connu lorsque aucune entrée ne se produit. On ajoute alors une résistance de rappel au plus dite de **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: | Il est également possible d'activer les résistances de pullup (de 20 Kohm) intégrées à l'Atmega par configuration: |
| |
<code c> | <code c> |
| |
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. | 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. |
| |
===== Broches configurées en sortie ====== | |
| |
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. | |
| |
| |