La fonction pinMode() sur Arduino : configurer les entrées et sorties

Pour configurer une broche sur une carte Arduino; soit pour la définir en une sortie ou une entrée, quel que soit son type; analogique ou binaire, il est nécessaire d'indiquer au microcontrôleur comment cette broche est utilisée. Pour ce fait, Arduino nous propose la fonction pinMode(), qui est l'une des fonctions les plus importantes dans son environnement.

Par exemple, avant d'allumer une diode led, de lire un bouton, de commander un moteur, un relais ou de communiquer avec un capteur, il est indispensable de configurer la broche ou les différentes broches de notre carte.

Par exemple, sur une carte Arduino Uno, nous retrouvons plusieurs broches, appelées aussi GPIO pour l'abréviation en anglais General Purpose Input Output. Comme nous l'avons indiqué ci-dessous, ces broches peuvent être utilisées comme des entrées ou des sorties en fonction de notre besoin. Ce qui les rend configurables, très agiles dans leur mode de fonctionnement. Ainsi, elles peuvent recevoir une information binaire ou analogique provenant d'un bouton, d'un capteur comme elles peuvent lire ou émettre un signal analogique.

Combien dispose chaque carte d'entrées et de sorties ?

Une carte Arduino Uno dispose de plusieurs entrées et sorties, le tableau ci-dessous nous rappelle cela :

Caractéristique Spécification technique
Broches E/S numériques 14 dont 6 ports avec PWM (Pulse Width Modulation en anglais)
Entrées analogiques 6  ports

 

Pour plus de détails, le schéma ci-dessous vous présente les différents entrées/sorties analogiques et numériques disponibles sur cette carte :

Les entrées/sorties analogiques et numériques sur Arduino Uno
Les entrées/sorties analogiques et numériques sur Arduino Uno

 

Si vous souhaitez obtenir plus de détails par rapport à cette carte populaire de la famille Arduino, nous vous invitons à vous référer à la section de notre cours suivant : Arduino Uno. Pour des raisons de compatibilités et dans le même principe, les deux cartes Uno R4 proposées par Arduino, dans ses deux versions Minima et Wifi présente également le même numbre de ports E/S numériques ou analogiques, disposés de la même manière. Pour rappel, nous vous partageons ce petit tableau :

Caractéristique Spécification technique : R4 Minima ou version Wifi
Broches E/S numériques 14 dont 6 ports avec PWM (Pulse Width Modulation en anglais)
Entrées analogiques 6  ports

Syntaxe de la fonction pinMode()

La syntaxe de cette fonction, d'après le framework Arduino, est comme suit :

pinMode(pin, mode);

tels que les paramètres de cette fonction sont les suivants :

  • pin : numéro de la broche (pin ou connecteur entrée ou sortie) à configurer, et,
  • mode : mode de fonctionnement de la broche.

Avec le paramètre mode peut prendre les valeurs suivantes :

  • INPUT: pour définir le port comme entrée numérique.
  • INPUT_PULLUP: pour définir le port en entrée numérique avec l'activation de la résistance de rappel interne.
  • OUTPUT: pour définir le port comme sortie numérique.

La broche en mode OUTPUT

Quand on déclare une broche de notre carte Arduino en mode OUTPUT, elle se transforme alors en une broche de sortie et sera capable de fournir un signal logique pour indiquer deux états possibles :

  • HIGH : niveau logique haut.
  • LOW : niveau logique bas.

Et en général, ce mode de fonctionnement est utilisé pour piloter :

  • une diode LED,
  • un relais,
  • un buzzer,
  • un petit moteur électrique,
  • un ou plusieurs transistors,
  • etc.

Les entrées/sorties dans Arduino

Les E/S numériques

Une fois que le microcontrôleur se réveille, autrement dit la carte a été mise sous tension ou réinitialisée, toutes les broches numériques, appelées aussi entrées/sorties, sont configurées par défaut comme des pins d'entrées (en anglais, appelée aussi INPUT. Du coup, pour les utiliser comme des sorties, il est nécessaire de les reconfigurer à des broches de sorties. Comme un premier exemple de code pour ce cours, nous allons redéfinir le port 8 à une sortie numérique :

void setup() {
   pinMode(8, OUTPUT);
}

void loop()
{
   // placez votre code principal ici, pour qu'il s'exécute en boucle indéfiniment.
}

Les entrées (E) analogiques

Une carte Arduino Uno ne dispose que des entrées analogiques désignées de A0 à A4. Comme nous le démontre le schéma ci-dessus dans la section "Combien dispose chaque carte d'entrées et de sorties", cette carte ne dispose que de ces 5 entrées analogiques pour lire une valeur, un signal, etc. Si nous aurons besoin d'une sortie analogique, il est possible d'apater les sorties PWM sous Arduino pour ce besoin.

C'est quoi PWM ?

PWM est l'abréviation en anglais de Pulse Width Modulation, soit en français la modulation de largeur d'impulsion.

Ces sorties sont donc capables de générer une puissance moyenne si vous faisez varier le rapport cyclique de la broche; ce qui nous permet d'obtenir une valeur moyenne souhaitée variable entre 0 et 5V.

Un premier exemple PWM

Par exemple, si vous souhaitez obtenir une valeur moyenne de 3.4V, vous pouvez configurer une des sorties PWM, disponible sur la carte, de cette sorte : Arduino fonctionne généralement avec une tension logique comprise entre 0 et 5V. Pour obtenir une valeur moyenne de 3.4V, il est donc demandé de générer un rapport cyclique :

$$D=\frac{3.4}{5}=0,68$$

Soit donc un rapport cyclique de 68%. Pour mieux comprendre cela, l'oscillogramme ci-dessous nous explique comment sera la sortie de cette broche dans le temps :

Forme d'un signal périodique à rapport cyclique de 68%

Et le code approprié pour générer ce signal PWM moyenné à 3.4V à partir de la même broche 8 sera donc comme suit :

void setup() {
  pinMode(8, OUTPUT);
}

void loop() {
  analogWrite(8, 173);
}

La valeur 173 correspond à la valeur calculée à partir de cette règle $255 \cdot 0.68 = 173.4$ soit donc 173.

Il est aussi possible de retrouver cette valeur en appliquant la règle de trois telle que:

$$5V \longrightarrow 255$$

$$3.4V \longrightarrow ?$$

$$? = \frac{3.4 \cdot 255}{5} \cong 173$$

Voir aussi

Pour renforcer vos compétences, nous vous invitons à consulter nos autres cours que nous proposons; conçus et développés par l'équipe électro-robot :

  • setup() : fonction d’initialisation exécutée une seule fois au démarrage d'un programme Arduino,
  • loop() : fonction principale exécutée en boucle et de manière répétitive lors de l'exécution d'un programme Arduino, et,
  • digitalWrite() : fonction permettant de définir l’état logique d’une broche numérique; soit HIGH ou LOW.

Référence

Si vous cherchez à obtenir plus de détails depuis le site officiel Arduino, nous vous invitons à consulter le lien ci-dessous :

 


📝 La dernière modification de cette page a été faite le 24 September 2026 par Electro & Robot