Arduino - Feux tricolores
Le Schéma
Câblage:
- Broche Digital 2 - Feu Vert 1
- Broche Digital 3 - Feu Orange 1
- Broche Digital 4 - Feu Rouge 1
- Broche Digital 5 - Feu Vert 2
- Broche Digital 6 - Feu Orange 2
- Broche Digital 7 - Feu Rouge 2
Le Code
void setup()
{
pinMode(2, OUTPUT); // vert1
pinMode(3, OUTPUT); // orange1
pinMode(4, OUTPUT); // rouge1
pinMode(5, OUTPUT); // vert2
pinMode(6, OUTPUT); // orange2
pinMode(7, OUTPUT); // rouge2
}
void loop()
{
digitalWrite(2, 1); // vert1
digitalWrite(3, 0); // orange1
digitalWrite(4, 0); // rouge1
digitalWrite(5, 0); // vert2
digitalWrite(6, 0); // orange2
digitalWrite(7, 1); // rouge2
delay(2000);
digitalWrite(2, 0); // vert1
digitalWrite(3, 1); // orange1
digitalWrite(4, 0); // rouge1
digitalWrite(5, 0); // vert2
digitalWrite(6, 0); // orange2
digitalWrite(7, 1); // rouge2
delay(2000);
digitalWrite(2, 0); // vert1
digitalWrite(3, 0); // orange1
digitalWrite(4, 1); // rouge1
digitalWrite(5, 1); // vert2
digitalWrite(6, 0); // orange2
digitalWrite(7, 0); // rouge2
delay(2000);
digitalWrite(2, 0); // vert1
digitalWrite(3, 0); // orange1
digitalWrite(4, 1); // rouge1
digitalWrite(5, 0); // vert2
digitalWrite(6, 1); // orange2
digitalWrite(7, 0); // rouge2
delay(2000);
}
Amélioration du code

Nous allons améliorer le code :
- Utilisation de constante pour les feux
- Utilisation de temporisation entre chaque phase
- Vert1 = allumé
- Orange1 = éteint
- Rouge1 = éteint
- Vert2 = éteint
- Orange2 = éteint
- Rouge2 = allumé
- Phase 1 - Rouge1 éteint, Vert1 et Rouge2 allumés // Début du cycle
- Phase 2 - Temporisation
- Phase 3 - Vert1 éteint , Orange1 et Rouge2 allumés
- Phase 3 - Temporisation
- Phase 4 - Orange1 éteint, Rouge1 et Rouge2 allumés // les 2 feux rouges sont allumés = SECURITE
- Phase 5 - Temporisation
- Phase 6 - Rouge2 éteint, Rouge1 et Vert2 allumés
- Phase 7 - Temporisation
- Phase 8 - Vert2 éteint, Rouge1 et Orange2 allumés
- Phase 9 - Temporisation
- Phase 10 - Orange2 éteint, Rouge1 et Rouge2 allumés // les 2 feux rouges sont allumés = SECURITE
- Phase 11 - Temporisation
- On boucle .... // Retour à la phase 1
Le code amélioré
// Initialisation des variables
const byte Vert1 = 2 ;
const byte Orange1 = 3 ;
const byte Rouge1 = 4 ;
const byte Vert2 = 5 ;
const byte Orange2 = 6 ;
const byte Rouge2 = 7 ;
//Tempo
const long TempoRougeSeul = 2000; // Tempo feu rouge seul
const long TempoVert = 2000; // Tempo feu vert
const long TempoOrange = 2000; // Tempo feu orange
// Initialisation des pin 2 à 7 en OUTPUT
void setup () {
pinMode (Vert1, OUTPUT) ;
pinMode (Orange1, OUTPUT) ;
pinMode (Rouge1, OUTPUT) ;
pinMode (Vert2, OUTPUT) ;
pinMode (Orange2, OUTPUT) ;
pinMode (Rouge2, OUTPUT) ;
}
void loop () {
// Etat des leds au départ
digitalWrite (Vert1, 1) ; // Si Vert1 = 0 et Rouge2 = 0,
digitalWrite (Orange1, 0) ; // ajouter les deux lignes
digitalWrite (Rouge1, 0) ; // Allumage de Vert1 et Rouge2
digitalWrite (Vert2, 0) ;
digitalWrite (Orange2, 0) ;
digitalWrite (Rouge2, 1) ; // .........
// Allumage de Vert1 et Rouge2
//digitalWrite (Vert1, 1) ;
//digitalWrite (Rouge2, 1) ;
// Début du cycle
// Feu n°1
delay (TempoVert) ; // Tempo
digitalWrite (Vert1, 0) ; // Vert1 éteint
digitalWrite (Orange1, 1) ; // Orange1 allumé
delay (TempoOrange) ; // Tempo
digitalWrite (Orange1, 0) ; // Orange1 éteint
digitalWrite (Rouge1, 1) ; // Rouge1 allumé
delay (TempoRougeSeul) ; // Tempo
// Feu n°2
digitalWrite (Rouge2, 0) ; // Rouge2 éteint
digitalWrite (Vert2, 1) ; // Vert2 allumé
delay (TempoVert) ; // Tempo
digitalWrite (Vert2, 0) ; // Vert2 éteint
digitalWrite (Orange2, 1) ; // Orange2 allumé
delay (TempoOrange) ; // Tempo
digitalWrite (Orange2, 0) ; // Orange2 éteint
digitalWrite (Rouge2, 1) ; // Rouge2 allumé
delay (TempoRougeSeul) ; // Tempo
digitalWrite (Vert1, 1) ; // Vert1 allumé
// On boucle ....
}