FRFAM.COM >> Famille >> Technologie &Innovation >> Informatique

Tutoriel Arduino pour Débutants : Créez un Contrôleur de Feux de Circulation

Le contrôleur de feux tricolores Arduino est un projet idéal et amusant pour les débutants, réalisable en moins d'une heure. Découvrez comment le construire étape par étape, avec une version basique et des variantes avancées.

Préférez une vidéo ? Consultez notre tutoriel vidéo dédié.

Matériel nécessaire pour votre contrôleur de feux tricolores Arduino

Outre une carte Arduino standard (comme l'Uno), vous aurez besoin de :

  • 1 résistance de 10 000 ohms
  • 1 interrupteur à bouton-poussoir
  • 6 résistances de 220 ohms
  • 1 breadboard
  • Fils de connexion
  • LED rouges, jaunes et vertes

La plupart des cartes Arduino conviennent si elles disposent de suffisamment de broches numériques. Consultez notre guide d'achat Arduino si nécessaire. Ces composants sont souvent inclus dans un kit de démarrage Arduino.

Feux de circulation Arduino : les bases

Commencez par un circuit simple. Voici le schéma :

Tutoriel Arduino pour Débutants : Créez un Contrôleur de Feux de Circulation

Connectez l'anode (patte longue) de chaque LED aux broches numériques 8, 9 et 10 (via une résistance de 220 ohms). Reliez les cathodes (patte courte) à la masse (GND) de l'Arduino.

Code pour les feux tricolores Arduino

Définissez des variables pour nommer les broches :

int rouge = 10;
int jaune = 9;
int vert = 8;

Dans la fonction setup(), configurez les broches en sortie :

void setup() {
  pinMode(rouge, OUTPUT);
  pinMode(jaune, OUTPUT);
  pinMode(vert, OUTPUT);
}

Ajoutez ensuite la logique principale dans loop() et la fonction changeLights() :

void loop() {
  changeLights();
  delay(15000);
}

void changeLights() {
  // Vert éteint, jaune allumé 3s
  digitalWrite(vert, LOW);
  digitalWrite(jaune, HIGH);
  delay(3000);
  // Jaune éteint, rouge allumé 5s
  digitalWrite(jaune, LOW);
  digitalWrite(rouge, HIGH);
  delay(5000);
  // Rouge + jaune 2s
  digitalWrite(jaune, HIGH);
  delay(2000);
  // Rouge et jaune éteints, vert allumé
  digitalWrite(jaune, LOW);
  digitalWrite(rouge, LOW);
  digitalWrite(vert, HIGH);
  delay(3000);
}

Chargez ce code (sélectionnez la bonne carte et le port dans Outils > Carte et Outils > Port). Votre feu change toutes les 15 secondes. Voici une démo accélérée :

Tutoriel Arduino pour Débutants : Créez un Contrôleur de Feux de Circulation

La fonction changeLights() simule un cycle réel : vert > jaune > rouge + jaune > vert. Appelée en boucle avec un délai de 15 secondes, elle tourne indéfiniment. Utilisez digitalWrite() pour allumer/éteindre (HIGH/LOW) et delay() pour les pauses.

Variante avancée : Passage piétons avec bouton

Ajoutez un bouton-poussoir pour activer le changement manuellement :

Tutoriel Arduino pour Débutants : Créez un Contrôleur de Feux de Circulation

Le circuit des feux reste identique. Connectez le bouton à la broche 12 avec une résistance pull-down de 10 kΩ pour éviter les états flottants et faux déclenchements.

Code pour le passage piétons

Ajoutez la variable bouton :

int bouton = 12;

Dans setup() :

pinMode(bouton, INPUT);
digitalWrite(vert, HIGH); // État initial : vert

Remplacez loop() par (avec anti-rebond) :

void loop() {
  if (digitalRead(bouton) == HIGH) {
    delay(15); // Anti-rebond
    if (digitalRead(bouton) == HIGH) {
      changeLights();
      delay(15000);
    }
  }
}

Démo accélérée :

Tutoriel Arduino pour Débutants : Créez un Contrôleur de Feux de Circulation

Feux de circulation avec intersection (2 voies)

Pour une intersection, dupliquez les feux sur les broches 11, 12, 13 :

Tutoriel Arduino pour Débutants : Créez un Contrôleur de Feux de Circulation

Code pour l'intersection

Variables :

// Feux 1
int rouge1 = 10;
int jaune1 = 9;
int vert1 = 8;
// Feux 2
int rouge2 = 13;
int jaune2 = 12;
int vert2 = 11;

setup() :

void setup() {
  pinMode(rouge1, OUTPUT); pinMode(jaune1, OUTPUT); pinMode(vert1, OUTPUT);
  pinMode(rouge2, OUTPUT); pinMode(jaune2, OUTPUT); pinMode(vert2, OUTPUT);
}

loop() basique. Mettez à jour changeLights() pour alterner :

void changeLights() {
  // Deux jaunes
  digitalWrite(vert1, LOW); digitalWrite(jaune1, HIGH);
  digitalWrite(jaune2, HIGH);
  delay(5000);
  // Feux 1 rouge, Feux 2 vert
  digitalWrite(jaune1, LOW); digitalWrite(rouge1, HIGH);
  digitalWrite(jaune2, LOW); digitalWrite(rouge2, LOW); digitalWrite(vert2, HIGH);
  delay(5000);
  // Deux jaunes
  digitalWrite(jaune1, HIGH); digitalWrite(jaune2, HIGH);
  digitalWrite(vert2, LOW);
  delay(3000);
  // Feux 1 vert, Feux 2 rouge
  digitalWrite(vert1, HIGH); digitalWrite(jaune1, LOW); digitalWrite(rouge1, LOW);
  digitalWrite(jaune2, LOW); digitalWrite(rouge2, HIGH);
  delay(5000);
}

Démo accélérée :

Tutoriel Arduino pour Débutants : Créez un Contrôleur de Feux de Circulation

Prochaines étapes

Maîtrisez maintenant les LED et boutons ! Étendez à un carrefour à 4 voies ou ajoutez des feux piétons. Explorez notre contrôleur MIDI DIY, un robot Arduino avec Xod, ou le codage avec VS Code et PlatformIO.

Crédit image : androsvector/Shutterstock

[]