Comment faire un feu de signalisation tricolore avec Arduino.

Feu de signalisation tricolore
Feu de signalisation tricolore

Voici un classique dans les projets d’ Arduino: simuler un feu tricolore simple, un feu de signalisation automatisé pour voitures et piétons et, finalement, un feu avec bouton poussoir.

Feu tricolore simple.

Il est nécessaire:

  • Arduino Uno ou équivalent.
  • Une plaque d’essai ou breadboard.
  • 4 fils.
  • 3 led: rouge, jaune et verte.
  • 3 résistances de 220 Ω.

Pour le cablage on positionne les trois diodes sur la breadboard, les reliant aux broches 10, 9, 8 de la plaque Arduino Uno. Il faudra vérifier que la patte longue soit connectée positif et la patte courte soit reliée à la résistance.

Schéma du feu de signalisation tricolore simple avec Arduino.
Feu tricolore simple

Le code es simple: on introduit une variable où noter le temps d’attente. Dans la fonction setup() on indique que les pins 10, 9, 8 seront les voies de sortie.

Après, on allumera la led concernée avec la valeur HIGH, et on l’éteindra changeant la valeur à LOW. D’abord, la couleur rouge sera allumé, quand le feu passera à vert, la diode rouge s’éteindra; avant de revenir sur le rouge, la couleur jaune s’allumera et la diode verte sera éteinte.

Code:

// Feu tricolore simple avec Arduino
int tempsAttente = 5000;
 
void setup(){
  pinMode(10, OUTPUT);    // Rouge
  pinMode(9, OUTPUT);     // Jaune
  pinMode(8, OUTPUT);     // Verte
}

void loop() {
  digitalWrite(10, HIGH);     // rouge allumée
  delay(tempsAttente);

  digitalWrite(8, HIGH);      // verte allumée
  digitalWrite(10, LOW);      // rouge éteinte
  delay(tempsAttente);

  digitalWrite(9, HIGH);      // jaune allumée
  digitalWrite(8, LOW);       // verte éteinte
  delay(1000);

  digitalWrite(9, LOW);       // jaune éteinte
}

Feu automatisé pour voitures et piétons.

Il est nécessaire:

  • Arduino Uno ou équivalent.
  • Une breadboard.
  • 6 fils.
  • 5 led: 2 rouges, 1 jaune, 2 vertes.
  • 5 résistances de 220 Ω.
Feu automatisé pour voitures et piétons avec Arduino.
Feu tricolore pour voitures et piétons

Le code est similaire, simplement on ajoute deux diodes supplémentaires. Tenons compte que le feu pour voitures doit être rouge pour que celui des piétons soit vert.

Code:

// Feu pour voitures et piétons avec Arduino
int tempsVoitures = 5000;
int tempsPietons = 3000;
 
void setup(){
  // Feu voitures
  pinMode(10, OUTPUT);    // Rouge
  pinMode(9, OUTPUT);     // Jaune
  pinMode(8, OUTPUT);     // Vert
  // Feu piétons
  pinMode(3, OUTPUT);     // Rouge
  pinMode(2, OUTPUT);     // Vert
}

void loop() {
  digitalWrite(10, HIGH); // rouge allumé
  digitalWrite(2, HIGH);  // vert piétons allumé
  digitalWrite(3, LOW);   // rouge piétons éteint
  delay(tempsVoitures);

  digitalWrite(8, HIGH);  // vert allumé
  digitalWrite(10, LOW);  // rouge éteint
  digitalWrite(2, LOW);   // vert piétons éteint
  digitalWrite(3, HIGH);  // rouge piétons allumé
  delay(tempsPietons);

  digitalWrite(9, HIGH);  // jaune allumé
  digitalWrite(8, LOW);   // vert éteint
  delay(1000);

  digitalWrite(9, LOW);   // jaune éteint
}

Feu avec bouton-poussoir pour voitures et piétons.

Il est nécessaire:

  • Arduino Uno ou équivalent.
  • Une plaque d’essai ou breadboard.
  • 9 fils.
  • 5 led: 2 rouges, 1 jaune, 2 vertes.
  • 5 résistances de 220 Ω et 1 de 10 KΩ.
  • 1 bouton-poussoir.

Le cablage se complique un peu puisque on va insérer un pulsateur qu’ activera le changement de couleur du feu afin de permettre le passage des piétons.

Feu avec bouton-poussoir pour voitures et piétons avec Arduino.
Feu tricolore avec bouton poussoir

Pour commencer, le feu pour voitures est vert, donc celui des piétons doit être rouge. Nous allons créer la fonction changeCouleur(), à laquelle on appellera si l’état du bouton-poussoir change.

Code:

int tempsTraverse = 5000;
unsigned long tempsChange = 0;
 
void setup(){
  // feu voitures
  pinMode(10, OUTPUT);  // rouge
  pinMode(9, OUTPUT);   // jaune
  pinMode(8, OUTPUT);   // vert
  // feu piétons
  pinMode(3, OUTPUT);   // rouge
  pinMode(2, OUTPUT);   // vert
  pinMode(6, INPUT);    // bouton-poussoir, changement couleur
  digitalWrite(8, HIGH);    // vert allumé, voitures
  digitalWrite(3, HIGH);    // rouge allumé, piétons
}

void loop() {
 int etat = digitalRead(6);
 if (etat == LOW && (millis() - tempsChange) > 5000 ){
  changeCouleur();
 }
}

void changeCouleur() {
  digitalWrite(8,LOW);    // vert éteint, voitures
  digitalWrite(9, HIGH);  // jaune allumé, voitures
  delay(2000);
  
  digitalWrite(9, LOW);   // jaune éteint, voitures
  digitalWrite(10, HIGH); // rouge allumé, voitures
  delay(1000);
  
  digitalWrite(3, LOW);   // rouge éteint, piétons
  digitalWrite(2, HIGH);  // vert allumé, piétons
  delay(tempsTraverse);
  // clignotement de la diode verte pour piétons
  for (int x=0; x<10; x++) {
    digitalWrite(2, HIGH);
    delay(250);
    digitalWrite(2, LOW);
    delay(250);
  }
  
  digitalWrite(3, HIGH);    // rouge allumé, piétons
  delay(500);
  
  digitalWrite(10, LOW);    // rouge éteint, voiture
  digitalWrite(8, HIGH);    // vert allumé, voiture
  tempsChange = millis();
}
Articles similaires
Laisser un commentaire