#150Débutant

Simulateur de Feu de Circulation Raspberry Pi Pico (3 LEDs séquentielles, GP11/GP12/GP13)

Nous simulons un vrai feu de circulation avec des LEDs rouge, jaune et verte. Vert 4 sec "passez", jaune 1,5 sec "préparez", rouge 3 sec "arrêtez" et rouge+jaune 1 sec "départ" (motif européen). Apprends la définition de fonction, la logique de machine à états et la synchronisation multi-GPIO. Circuit simple : 3 LEDs sur GP11/GP12/GP13, chacune avec 220Ω.

4.0(1)
12 terminé
Simulateur de Feu de Circulation Raspberry Pi Pico (3 LEDs séquentielles, GP11/GP12/GP13)
Nous simulons le fonctionnement réel d'un feu de signalisation à l'aide de LED rouges, jaunes et vertes — c'est le premier projet de la série Pico à utiliser 3 LED ! Vert pendant 4 secondes (« avancez »), orange pendant 1,5 seconde (« préparez-vous »), rouge pendant 3 secondes (« arrêtez-vous ») et rouge + orange pendant 1 seconde (« démarrez ») (schéma des feux de signalisation européens). Grâce à ce projet, tu apprendras les concepts de **définition de fonction** (`def éteindre_tout()`), de **logique de machine à états** (séquence) et de **synchronisation de plusieurs GPIO**. Le circuit est très simple : 3 LED connectées aux broches GP11 (vert), GP12 (jaune) et GP13 (rouge), chacune équipée d’une résistance de limitation de courant de 220 Ω. Les broches GP11, GP12 et GP13 sont côte à côte — le câblage reste ordonné. Installez-le en 5 minutes sur une platine Wokwi ou une maquette. Ce projet marque également le début de la **modularité du code** : l'opération répétitive (éteindre les LED) a été regroupée en une seule fonction.

Vidéo

Schéma du circuit

Simulateur de Feu de Circulation Raspberry Pi Pico (3 LEDs séquentielles, GP11/GP12/GP13) - Circuit

Code source

MicroPython
1# ─────────────────────────────────────────
2#   BlueGrays · bluegrays.com
3#   Simulateur de Feu de Circulation Raspberry Pi Pico (3 LEDs séquentielles, GP11/GP12/GP13)
4# ─────────────────────────────────────────
5# Un vrai cycle de feu tricolore avec des LED rouge, jaune et verte : vert
6# 4 s, jaune 1.5 s, rouge 3 s, puis rouge + jaune 1 s (départ à
7# l'européenne). Une fonction utilitaire qui éteint toutes les LED évite
8# de répéter du code.
9#
10# Broches :
11#   GP11 -> LED verte
12#   GP12 -> LED jaune
13#   GP13 -> LED rouge (chaque LED avec 220 ohm)
14#   LED katotlari -> Cathodes des LED -> GND
15
16from machine import Pin
17from time import sleep
18
19# ============ PIN / PIN ============
20# Broches du feu tricolore (GP11-GP12-GP13 adjacentes)
21green_led  = Pin(11, Pin.OUT)      # LED verte : GO
22yellow_led = Pin(12, Pin.OUT)      # LED jaune : PRÊT
23red_led    = Pin(13, Pin.OUT)      # LED rouge : STOP
24
25# ============ FONCTION UTILITAIRE ============
26def all_off():
27    """
28    TR: Tum LED'leri sondur (DRY prensibi: tekrardan kacinmak icin)
29    EN: Turn off all LEDs (DRY principle: avoid repetition)
30    """
31    green_led.value(0)
32    yellow_led.value(0)
33    red_led.value(0)
34
35print("== BlueGrays · bluegrays.com ==")
36print("Trafik Lambasi / Traffic Light")
37print("Yesil: GP11 | Sari: GP12 | Kirmizi: GP13")
38
39# ============ BOUCLE PRINCIPALE ============
40while True:
41    # VERT : GO (4 s)
42    all_off()
43    green_led.value(1)
44    print("[TRAFIK/TRAFFIC] YESIL / GREEN — GEC / GO")
45    sleep(4)
46
47    # JAUNE : PRÊT (1.5 s)
48    all_off()
49    yellow_led.value(1)
50    print("[TRAFIK/TRAFFIC] SARI / YELLOW — HAZIRLAN / READY")
51    sleep(1.5)
52
53    # ROUGE : STOP (3 s)
54    all_off()
55    red_led.value(1)
56    print("[TRAFIK/TRAFFIC] KIRMIZI / RED — DUR / STOP")
57    sleep(3)
58
59    # ROUGE + JAUNE : DÉMARRAGE (1 s), à l'européenne
60    # Phase de départ : le conducteur passe une vitesse
61    yellow_led.value(1)
62    print("[TRAFIK/TRAFFIC] KIRMIZI+SARI / RED+YELLOW — KALKIS / STARTING")
63    sleep(1)
64

FAQ

Que signifie le fait que les voyants rouge et jaune s'allument en même temps ?▾

Sur certains feux de signalisation en Europe, les lumières rouge et orange s'allument simultanément avant que le feu ne passe du rouge au vert ; cela indique aux conducteurs de « se préparer ». Ce système est également utilisé en Turquie.

Quel est l'intérêt de définir une fonction ?▾

Une fonction telle que « all_off() » vous permet d'appeler trois lignes de code répétitives à l'aide d'un seul nom. Le code est ainsi raccourci, devient plus lisible et toute modification s'effectue à un seul endroit.

Comment modifier les durées ?▾

Pour chaque lumière, modifie les valeurs en secondes à l'intérieur de la fonction sleep(). Si tu définis ces valeurs comme des constantes au début du fichier (par ex. GREEN_TIME = 4) et les utilises dans des appels comme sleep(GREEN_TIME), le réglage devient beaucoup plus facile.

Puis-je ajouter un bouton « piéton » ?▾

Oui. Tu peux ajouter un bouton qui, lorsqu'on appuie dessus, fait passer la boucle en rouge. Pour que le bouton soit détecté instantanément, il faut utiliser la fonction ticks_ms() à la place de sleep pour la synchronisation ; cela sera expliqué dans le prochain projet consacré au sélecteur de mode.

Feu de Circulation Raspberry Pi Pico (MicroPython) | BlueGrays