Tutoriel complet : Allumer une séquence de LED avec Arduino
1. Objectif du projet
Allumer une série de 9 LED (vertes, jaunes et rouges) les unes après les autres, chacune pendant 300 ms, pour créer un effet de « chenillard ».
Tu vas apprendre :
- à connecter les LED correctement,
- à comprendre chaque ligne du code,
- à adapter ce code à d’autres projets.

Prérequis :
- 1 x Carte Arduino Uno (ou compatible)
- 3 × LED : 3 vertes, 3 jaunes, 3 rouges
- 9 × Résistance 220Ω
- 1 x Breadboard
- Des câbles de connexion
Version IDE :
- Arduino IDE 2.3.5
Schéma de câblage
Chaque LED doit être connectée :
- anode (+) → vers une sortie numérique de l’Arduino (pins 2 à 10 dans ton code)
- cathode (–) → vers une résistance 220 Ω → ensuite vers GND

Code Arduino :
int LEDverte1 = 2;
int LEDverte2 = 3;
int LEDverte3 = 4;
int LEDjaune4 = 5;
int LEDjaune5 = 6;
int LEDjaune6 = 7;
int LEDrouge7 = 8;
int LEDrouge8 = 9;
int LEDrouge9 = 10;
void setup() {
pinMode(LEDverte1, OUTPUT);
pinMode(LEDverte2, OUTPUT);
pinMode(LEDverte3, OUTPUT);
pinMode(LEDjaune4, OUTPUT);
pinMode(LEDjaune5, OUTPUT);
pinMode(LEDjaune6, OUTPUT);
pinMode(LEDrouge7, OUTPUT);
pinMode(LEDrouge8, OUTPUT);
pinMode(LEDrouge9, OUTPUT);
}
void loop() {
digitalWrite(LEDverte1, HIGH);
delay(300);
digitalWrite(LEDverte1, LOW);
digitalWrite(LEDverte2, HIGH);
delay(300);
digitalWrite(LEDverte2, LOW);
digitalWrite(LEDverte3, HIGH);
delay(300);
digitalWrite(LEDverte3, LOW);
digitalWrite(LEDjaune4, HIGH);
delay(300);
digitalWrite(LEDjaune4, LOW);
digitalWrite(LEDjaune5, HIGH);
delay(300);
digitalWrite(LEDjaune5, LOW);
digitalWrite(LEDjaune6, HIGH);
delay(300);
digitalWrite(LEDjaune6, LOW);
digitalWrite(LEDrouge7, HIGH);
delay(300);
digitalWrite(LEDrouge7, LOW);
digitalWrite(LEDrouge8, HIGH);
delay(300);
digitalWrite(LEDrouge8, LOW);
digitalWrite(LEDrouge9, HIGH);
delay(300);
digitalWrite(LEDrouge9, LOW);
}
Explication du code
1. Déclaration des pins (au tout début du programme, avant void setup())
Dans Arduino, chaque pin numérique (2, 3, 4, etc.) peut contrôler une LED, un bouton, un capteur… mais pour que le programme reste clair, on évite d’utiliser directement les numéros partout dans le code.
C’est pour ça qu’on crée des variables qui portent des noms faciles à comprendre :
int LEDverte1 = 2; int LEDverte2 = 3; int LEDverte3 = 4; int LEDjaune4 = 5; int LEDjaune5 = 6; int LEDjaune6 = 7; int LEDrouge7 = 8; int LEDrouge8 = 9; int LEDrouge9 = 10;
Voici ce que ça signifie :
int→ c’est un nombre entier. Ici il représente le numéro de la pin.LEDverte1→ c’est le nom que TU donnes à la LED. Tu pourrais l’appeler comme tu veux.= 2→ cela indique que cette LED est connectée à la pin 2 de l’Arduino.
Pourquoi faire ça ?
- Le code devient beaucoup plus lisible.
- Si tu changes une LED de pin, tu modifies une seule ligne, pas tout le code.
- Cela évite les erreurs quand on utilise beaucoup de composants.
En résumé : tu crées un « dictionnaire » où chaque LED a un nom, et ce nom pointe vers une pin Arduino.
2. Configuration des pins en sortie (dans void setup())
Une fois que tu as donné un nom à chaque pin, tu dois dire à l’Arduino comment il doit utiliser ces pins.
Les pins peuvent être configurées en deux modes :
- OUTPUT → pour envoyer du courant (ex : allumer une LED)
- INPUT → pour recevoir un signal (ex : lire un bouton)
Dans ton projet, chaque pin doit envoyer du courant vers une LED. Donc tu utilises :
pinMode(LEDverte1, OUTPUT);
Pourquoi c’est obligatoire ?
Parce que si tu n’indiques pas que la pin est une sortie, l’Arduino ne saura pas si :
- il doit envoyer du courant,
- ou au contraire écouter ce qui arrive dessus.
Sans pinMode(..., OUTPUT), la LED pourrait :
- ne pas s’allumer,
- clignoter faiblement,
- ou créer un comportement imprévisible.
Comment ça marche concrètement ?
Lorsque tu écris :
pinMode(LEDverte1, OUTPUT);
Tu dis à l’Arduino :
« La pin 2 (LEDverte1) va servir à alimenter quelque chose. Prépare-la à envoyer du courant. »
Et tu répètes cela pour toutes les LED :
pinMode(LEDverte2, OUTPUT); pinMode(LEDverte3, OUTPUT); pinMode(LEDjaune4, OUTPUT); ... pinMode(LEDrouge9, OUTPUT);
En résumé simple :
- Tu DONNES des noms aux pins (étape 1).
- Tu DIS à l’Arduino que ces pins serviront à allumer des LED, donc elles doivent être configurées en OUTPUT.
3. Boucle principale : séquence du chenillard
La fonction loop() est la partie du programme qui tourne en continu, encore et encore. C’est ici que tu définis le comportement de ton montage : comment les LED doivent s’allumer et dans quel ordre.
Dans ton cas, tu veux créer un chenillard : les LED s’allument l’une après l’autre, toujours dans le même sens.
Voici ce qui se passe pour chaque LED :
digitalWrite(..., HIGH);→ l’Arduino envoie du courant → la LED s’allume.delay(300);→ l’Arduino attend 300 millisecondes → la LED reste allumée un court moment.digitalWrite(..., LOW);→ l’Arduino coupe le courant → la LED s’éteint.
Et ensuite, on passe à la LED suivante.
Exemple pour la première LED :
digitalWrite(LEDverte1, HIGH); // J'allume la LED 1 delay(300); // J'attends 300 ms digitalWrite(LEDverte1, LOW); // Je l'éteins
Puis immédiatement :
digitalWrite(LEDverte2, HIGH); ...
Et ainsi de suite jusqu’à la LED rouge 9.
Ce que fait réellement la boucle :
- elle allume LED 1,
- puis LED 2,
- puis LED 3,
- … jusqu’à LED 9,
- puis recommence automatiquement depuis LED 1.
Pourquoi ça recommence tout seul ?
Parce que loop() est exécutée indéfiniment par l’Arduino, tant qu’il est alimenté.
Résultat visuel :
Tu obtiens un effet d’animation où une lumière semble « se déplacer » le long des LED. C’est exactement ce qu’on appelle un chenillard.
Ce que fait exactement le programme
- La LED 1 s’allume 300 ms, puis s’éteint.
- La LED 2 s’allume 300 ms, puis s’éteint.
- … jusqu’à la LED 9.
- La boucle recommence à l’infini.
Tu obtiens un effet de déplacement lumineux.
Conclusion
Ton code fonctionne parfaitement pour créer un chenillard simple. Ce tutoriel t’a montré :
- comment le câbler,
- comment il fonctionne,
Test et dépannage
Si une LED ne s’allume pas :
- Vérifie son orientation (anode = longue patte)
- Vérifie que la résistance est bien en série
- Vérifie le numéro de pin
- Teste la LED seule avec :
digitalWrite(pin, HIGH);

Amélioration facile du code
Voici une version plus courte grâce à un tableau et une boucle :
int leds[] = {2,3,4,5,6,7,8,9,10};
void setup() {
for(int i = 0; i < 9; i++){
pinMode(leds[i], OUTPUT);
}
}
void loop() {
for(int i = 0; i < 9; i++){
digitalWrite(leds[i], HIGH);
delay(300);
digitalWrite(leds[i], LOW);
}
}
Même résultat
Code plus propre et plus facile à modifier
