SunuMake
Tous les projets
Intermédiaire40 minKit Découverte

Le feu piéton avec bouton d'appel

Un vrai carrefour : le feu voitures reste au vert, jusqu'à ce qu'un piéton appuie sur le bouton. Alors tout s'enchaîne dans le bon ordre.

C'est exactement la logique des carrefours de Dakar équipés d'un bouton piéton - et le premier vrai programme « qui prend des décisions » que tu écris.

Tu auras besoin du

SunuMake Découverte

Tes premiers pas avec Arduino - 8 composants inclus.

7 500 FCFAVoir le kit
Matériel

Ce qu'il faut sortir du kit

Prépare tout avant de commencer : c'est plus agréable que de fouiller la boîte au milieu du câblage.

  • 1Carte Arduino UNO
  • 1Plaque d'essai (breadboard)
  • 3LED voituresrouge, jaune, verte
  • 2LED piétonsrouge et verte
  • 5Résistances 220 Ω
  • 1Bouton poussoir
  • 8Fils de connexion
Câblage

Le schéma des branchements

Débranche toujours l'USB avant de modifier un câblage, et vérifie ce tableau ligne par ligne avant de rebrancher.

On relieàen passant par
LED rouge voituresBroche 2Résistance 220 Ω
LED jaune voituresBroche 3Résistance 220 Ω
LED verte voituresBroche 4Résistance 220 Ω
LED rouge piétonsBroche 5Résistance 220 Ω
LED verte piétonsBroche 6Résistance 220 Ω
Bouton — patte 1Broche 7Aucune résistance : INPUT_PULLUP
Bouton — patte 2GNDRail bleu (−)
Toutes les pattes courtes des LEDGNDRail bleu (−)
Pas à pas

Les étapes

  1. 1

    Matériel

    5 LED (rouge, jaune, verte pour les voitures + rouge et verte pour les piétons), 5 résistances 220 Ω, 1 bouton poussoir, des fils.

  2. 2

    Câble le feu voitures

    Rouge → broche 2, jaune → broche 3, verte → broche 4. Chacune via sa résistance, pattes courtes au rail bleu (−).

  3. 3

    Câble le feu piétons

    Rouge piéton → broche 5, verte piéton → broche 6. Même principe. Place-les un peu à l'écart des trois autres pour bien distinguer les deux feux.

  4. 4

    Câble le bouton

    Une patte du bouton va à la broche 7, l'autre à GND. Pas besoin de résistance : on utilisera la résistance interne de l'Arduino (`INPUT_PULLUP`).

  5. 5

    Téléverse et traverse

    Au repos : vert voitures, rouge piétons. Appuie sur le bouton : le feu passe au jaune, puis au rouge, et le piéton passe au vert quelques secondes avant que tout revienne à l'état initial. Exactement comme dans la rue.

Code Arduino

Le programme à téléverser

Copie ce code dans l'IDE Arduino, branche ta carte en USB et clique sur le bouton « Téléverser » (la flèche en haut à gauche).

sketch.ino
// Feu piéton avec bouton d'appel - SunuMake
const int V_ROUGE = 2, V_JAUNE = 3, V_VERT = 4; // feu voitures
const int P_ROUGE = 5, P_VERT = 6; // feu piétons
const int BOUTON = 7;
void setup() {
pinMode(V_ROUGE, OUTPUT); pinMode(V_JAUNE, OUTPUT); pinMode(V_VERT, OUTPUT);
pinMode(P_ROUGE, OUTPUT); pinMode(P_VERT, OUTPUT);
pinMode(BOUTON, INPUT_PULLUP); // bouton relié à GND
repos(); // état de départ
}
void loop() {
// LOW = bouton appuyé (à cause du pull-up : au repos la broche est à HIGH).
if (digitalRead(BOUTON) == LOW) {
cycleTraversee();
repos();
}
}
// État par défaut : les voitures passent, les piétons attendent.
void repos() {
digitalWrite(V_ROUGE, LOW); digitalWrite(V_JAUNE, LOW); digitalWrite(V_VERT, HIGH);
digitalWrite(P_ROUGE, HIGH); digitalWrite(P_VERT, LOW);
}
void cycleTraversee() {
// 1. Les voitures sont prévenues.
digitalWrite(V_VERT, LOW);
digitalWrite(V_JAUNE, HIGH);
delay(2000);
// 2. Les voitures s'arrêtent.
digitalWrite(V_JAUNE, LOW);
digitalWrite(V_ROUGE, HIGH);
delay(1000); // sécurité : tout le monde au rouge un instant
// 3. Le piéton traverse.
digitalWrite(P_ROUGE, LOW);
digitalWrite(P_VERT, HIGH);
delay(6000);
// 4. Fin de traversée : la verte piéton clignote pour avertir.
for (int i = 0; i < 5; i++) {
digitalWrite(P_VERT, LOW); delay(300);
digitalWrite(P_VERT, HIGH); delay(300);
}
digitalWrite(P_VERT, LOW);
digitalWrite(P_ROUGE, HIGH);
delay(1000);
}
Mini-cours

Comment ça marche ?

Ce projet t'apprend deux choses importantes.

Le pull-up interne. Un bouton non appuyé laisse la broche « en l'air » : elle capte du bruit électrique et lit n'importe quoi. INPUT_PULLUP active une résistance à l'intérieur de l'Arduino qui maintient la broche à 5 V au repos. Appuyer sur le bouton la relie à GND, donc à 0 V. C'est pour ça qu'on teste == LOW : appuyé signifie 0, c'est contre-intuitif mais c'est la convention.

La machine à états. Ton programme n'a que deux états : *repos* (voitures au vert) et *traversée* (la séquence complète). loop() ne fait qu'une chose : surveiller le bouton, et déclencher la séquence si besoin. Toute la complexité est rangée dans des fonctions au nom explicite.

Regarde aussi la sécurité dans le code : entre le rouge voitures et le vert piéton, il y a une seconde où tout le monde est au rouge. Ce n'est pas un oubli - c'est ce qui laisse le temps à une voiture engagée de dégager le carrefour. Un vrai feu réel fait exactement pareil.

Continuer

D'autres projets à essayer