La fonction setup() sur Arduino : son rôle, son fonctionnement et comment l'écrire

La fonction setup() dans un programme Arduino est l'une des deux fonctions fondamentales de la structure de base d'un programme Arduino. Complémenté par la fonction loop(), ces deux fonctions constituent la structure de base de tous les sketches Arduino (appelés aussi programmes), quel que soit le modèle de la carte Arduino utilisée; Uno, Nano, MEGA, ... etc. Ainsi, toute structure minimale d'un programme Arduino possède au minimum les deux fonctions suivantes :

void setup() {
  // placez ici votre code d'initialisation, à exécuter une seule fois.
}

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

Il est également à noter que même si ces deux fonctions sont vides, elles doivent être présentes. Si l'une des deux est manquante, le programme ne sera pas compilé et une erreur vous sera notifiée dans la fenêtre sortie de la solution Arduino IDE.

Pourquoi la fonction setup() ?

Comme tout programme, un bloc d'initialisation des éléments de notre programme est requis ainsi que l'activation des variables, la communication des broches de notre carte ou même avec le moniteur série. C'est dans cette utilité que la fonction setup() est conçue pour effectuer cette phase d'initialisation. Et elle sera exécutée une seule fois, quand le programme démarre.

Contrairement à un programme exécuté sous un système d'exploitation tel que Windows, Linux, etc, une carte Arduino démarre le code compilé depuis sa mémoire Flash dès qu'elle est alimentée électriquement. D'où l'importance de cette fonction pour déclarer et configurer les différents variables et paramètres nécessaires au bon fonctionnement du programme Arduino mis en place.

Ainsi, avant de piloter une diode LED, lire la valeur analogique ou numérique d'un capteur, de communiquer avec un ordinateur, etc. le microcontrôleur de notre carte Arduino doit préparer l'ensemble de son environnement de fonctionnement; la fonction setup() est précisément conçue pour effectuer cette phase d'initialisation.

Quand la fonction setup() est exécutée ?

La fonction setup() est exécutée automatiquement par le microcontrôleur de la carte Arduino dans certains cas précis et ce après chaque :

  • la mise sous tension: vous alimentez votre carte Arduino électriquement; soit en la branchant sur un port USB 5V soit à partir d'une alimentation externe,
  • Resert de la carte: vous resetez la carte manuellement en appuyant sur le bouton RESET, électriquement via la borche RESET ou même en programmant cette remise à zéro,
  • le téléversement d'un nouveau programme : la mise en place d'un nouveau code efface l'ancien et reset la carte automatiquement, ce qui enclenche cette fonction.

Et une fois toutes les instructions du bloc setup() sont exécutées, le programme passe automatiquement à la deuxième partie du code; la fonction loop(), qui sera exécutée indéfiniment jusqu'à la mise à l'arrêt de la carte (ou à son RESET).

Syntaxe de la fonction setup()

La syntaxe de cette fonction, qui ne s'exécute qu'une seule fois est comme suit :

void setup() {
  // placez ici votre code d'initialisation, à exécuter une seule fois.
}

Cette fonction est composée de 3 composantes essentielles telles que :

La fonction void

Le mot-clé void est un mot-clé du langage C++ pour déclarer une fonction qui ne renvoie aucune valeur à la fin de son exécution. Contrairement à une fonction de type entier (int) ou de type décimal (float), ou tout autre type, la fonction setup() n'effectue que des actions et ne retourne aucune valeur ou aucune information au programme principal.

Le nom de la fonction

Le nom de cette fonction ne peut être que setup(), qui n'est qu'un mot-clé réservé par le framework Arduino et il ne doit jamais être modifié. Si vous le modifiez, la compilation de votre code échoue et un message d'erreur vous sera retourné dans la fenêtre appropriée "sortie" (ou Output si vous utilisez une version anglaise de l'éditeur Arduino IDE). Par exemple, les fonctions ci-dessous sont incorrectes et elle ne seront pas interprété par le compilateur pour la même fonction setup() :

Exemple 1 erroné :

La mise en majiscule de la première lettre du mot setup retourne une erreur de compilation :

void Setup() {
  // placez ici votre code d'initialisation, à exécuter une seule fois.
}

Exemple 2 erroné :

L'utilisation d'un autre mot pour la fonction setup ne permet pas d'initialiser notre programme Arduino et nous retournera une erreur de compilation en vue l'absence de la fonction setup() :

void initialisation() {
  // placez ici votre code d'initialisation, à exécuter une seule fois.
}

Les parenthèses () et les accolades {}

Comme toute fonction void dans la lange C++, il est nécessaire d'ajouter les parenthèses pour indiquer les paramètres de la fonction. Sauf que d'après le framework Arduino, la fonction setup ne prend et ne transmet aucun paramètre donc elle sont toujours vides.

Et pour délimiter le début et la fin de la fonction setup(), comme toute fonction aussi écrite dans la syntaxe du C++, deux accolades sont nécessaires pour indiquer le début et la fin de la fonction. D'où l'importance de déclarer toutes nos variables et toutes nos commandes d'initialisation à l'intérieur de ces deux accolades.

 


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