Raspberry - Feux Tricolores

Si vous débutez en GPIO Raspberry et/ou en Python, je vous invite à prendre connaissance des instructions sur la page:
Raspberry - Faire clignoter une led

Je vous propose de créer un feu tricolore (Vert, Orange et Rouge), et de le piloter en Python avec le GPIO du Raspberry.
Cablage du GPIO
BCM | BOARD | BCM | BOARD | |||
---|---|---|---|---|---|---|
Feux | Vert 1 | GPIO16 | 36 | Vert 2 | GPIO23 | 16 |
Feux | Orange 1 | GPIO20 | 38 | Orange 2 | GPIO24 | 18 |
Feux | Rouge 1 | GPIO21 | 40 | Rouge 2 | GPIO25 | 22 |
Masse | Ground | 6 |
Les phases d'allumages
Dans chaque phase, seulement deux feux sont allumés, les autres sont éteints.
Phase 1 | Phase 1 | Phase 2 | Phase 2 | Phase 3 | Phase 3 | Phase 4 | Phase 4 | ||||
---|---|---|---|---|---|---|---|---|---|---|---|
Vert 1 | Rouge 2 | Orange 1 | Rouge 2 | Rouge 1 | Vert 2 | Rouge 1 | Orange 2 | ||||
Allumé | Allumé | Allumé | Allumé | Allumé | Allumé | Allumé | Allumé | ||||
Tous les autres feux sont éteints ... |
Câblage des leds
- Toutes les Catodes des leds sont reliées à la masse -- Ground -- 6
- Anode Vert1 -- résistance de 220 Ohms -- GPIO16 -- 36
- Anode Orange1 -- résistance de 220 Ohms -- GPIO20 -- 38
- Anode Rouge1 -- résistance de 220 Ohms -- GPIO21 -- 40
- Anode Vert2 -- résistance de 220 Ohms -- GPIO23 -- 16
- Anode Orange2 -- résistance de 220 Ohms -- GPIO24 -- 18
- Anode Rouge2 -- résistance de 220 Ohms -- GPIO25 -- 22
Programme Python
Créer un fichier Python et nommer le en tricolor.py
Copier le code ci-dessous dans le fichier tricolor.py
- import RPi.GPIO as GPIO
- import time
- # Definition des variables
- vert1 = 36 # Feu vert1
- orange1 = 38 # Feu orange1
- rouge1 = 40 # Feu rouge1
- vert2 = 16 # Feu vert2
- orange2 = 18 # Feu orange2
- rouge2 = 22 # Feu rouge2
- tempo = 3 # Temporisation
- GPIO.setmode(GPIO.BOARD)
- GPIO.setup(vert1, GPIO.OUT)
- GPIO.setup(orange1, GPIO.OUT)
- GPIO.setup(rouge1, GPIO.OUT)
- GPIO.setup(vert2, GPIO.OUT)
- GPIO.setup(orange2, GPIO.OUT)
- GPIO.setup(rouge2, GPIO.OUT)
- # extinction des leds
- GPIO.output(36, 0)
- GPIO.output(38, 0)
- GPIO.output(40, 0)
- GPIO.output(16, 0)
- GPIO.output(18, 0)
- GPIO.output(22, 0)
- # Boucle
- try:
- while 1:
- GPIO.output(36, 1)
- GPIO.output(38, 0)
- GPIO.output(40, 0)
- GPIO.output(16, 0)
- GPIO.output(18, 0)
- GPIO.output(22, 1)
- time.sleep(tempo)
- GPIO.output(36, 0)
- GPIO.output(38, 1)
- GPIO.output(40, 0)
- GPIO.output(16, 0)
- GPIO.output(18, 0)
- GPIO.output(22, 1)
- time.sleep(tempo)
- GPIO.output(36, 0)
- GPIO.output(38, 0)
- GPIO.output(40, 1)
- GPIO.output(16, 1)
- GPIO.output(18, 0)
- GPIO.output(22, 0)
- time.sleep(tempo)
- GPIO.output(36, 0)
- GPIO.output(38, 0)
- GPIO.output(40, 1)
- GPIO.output(16, 0)
- GPIO.output(18, 1)
- GPIO.output(22, 0)
- time.sleep(tempo)
- except:
- GPIO.cleanup()
Pour exécuter le programme, faire Run / Run Module ou F5 dans la fenêtre tricolor.py
Le feu tricolore fonctionne ...