Les cartes Arduino possèdent des broches d'entrées/sorties configurables par programmation. Leur nombre est variable en fonction de la carte utilisée mais elle ont toutes les mêmes caractéristiques.
-
Configurées en sortie, elles ne peuvent délivrer que des niveaux logiques bas (0V) et des niveaux logiques haut (5V).
-
Configurées en entrée, elles ne peuvent recevoir que des niveaux logiques bas et haut.
LES ENTREES/SORTIES NUMERIQUES
L'Arduino Uno possède 14 broches d'entrées/sorties numériques identifiées sur la carte par les nombres 0 à 13 mais aussi 6 broches d'entrées analogiques pouvant fonctionner également en entrées/sorties numériques. Elles sont notées A0 à A5.
Les sorties numériques sont utilisées pour allumer des leds, piloter des afficheurs 7 segments ou à cristaux liquides, commander des transistors, des relais, etc...
Pour configurer une broche numérique en sortie, il faut dans la partie Setup du programme (voir page Logiciels/IDE Arduino) écrire la ligne pinMode(broche, OUTPUT), où broche représente le numéro de la broche numérique (0 à 20).
Pour mettre un niveau logique sur une broche, il faut écrire la ligne digitalWrite(broche, valeur), où broche représente le numéro de la broche numérique et valeur le niveau logique LOW ou HIGH.
Exemple :
Nous allumons une led branchée sur la broche numérique N°13
#define led 13 // affectation de la broche
void setup()
{
pinMode(led, OUTPUT); // la broche led est en sortie
}
void loop()
{
digitalWrite(led, HIGH); // la broche led est au niveau haut
}
Les entrées numériques sont utilisées pour lire l'état d'un interrupteur ou bouton poussoir, recevoir une information en provenance d'un capteur tout ou rien.
Pour configurer une broche numérique en entrée, il faut dans la partie Setup du programme (voir page Logiciels/IDE Arduino) écrire la ligne pinMode(broche, INPUT), où broche représente le numéro de la broche numérique (0 à 20).
Très souvent, les niveaux logiques sont fournis par des interrupteurs ou des boutons poussoirs selon les schémas ci-dessous :
Sur le schéma de gauche, l’entrée est maintenue au niveau haut et passe au niveau bas lorsque le bouton poussoir est actif. La résistance R impose un niveau haut et protège le montage des courts-circuits lorsque le bouton poussoir devient actif. C’est une résistance de tirage (pull-up).
Sur le schéma de droite, l’entrée est maintenue au niveau bas et passe au niveau haut lorsque le bouton poussoir est actif. La résistance R impose un niveau bas et protège le montage des courts-circuits lorsque le bouton poussoir devient actif. C’est une résistance de rappel (pull-down).
Les microcontrôleurs ATMega ont la particularité de posséder sur chaque broche une résistance de tirage qu’il faut activer à l’aide de l’instruction pinMode(broche, INPUT_PULLUP).
Pour lire l'état d'une broche, il faut écrire la ligne digitalRead(broche).
Exemple :
Nous allumons la led branchée sur la broche numérique N°13 si le bouton poussoir branché sur la broche numérique N°4 est actif.
#define bouton 4 // affectation de la broche bouton
#define led 13 // affectation de la broche led
boolean etat; // déclaration de la variable etat de type char
void setup()
{
pinMode(bouton, INPUT_PULLUP); // la broche bouton est en entrée avec une résistance de tirage
pinMode(led, OUTPUT); // la broche led est en sortie
}
void loop()
{
etat=digitalRead(bouton); // la variable etat prend la valeur de l'entrée bouton
if (etat==LOW) // si etat est au niveau bas (bouton actif)
{
digitalWrite(led, HIGH); // la broche led passe au niveau haut
}
else
{
digitalWrite(led, LOW); // la broche led passe au niveau bas
}
}
Certaines entrées/sorties numériques ont des fonctions particulières. Nous aborderons ces fonctions dans les rubriques :
LES SORTIES NUMERIQUES
LES ENTREES NUMERIQUES
Les tensions appliquées sur les broches d'entrées/sorties numériques doivent être comprise entre 0 et 5 V. Au delà de ces limites, le microcontrôleur sera endommagé.