Raspberry - Feux tricolores et bouton poussoir
Nous avons réalisé un feu tricolore (Raspberry - Feux tricolores).
Nous souhaitons ajouter aux feux tricolores, un bouton poussoir ou un interrupteur, pour stopper le feu tricolore (vert, orange, rouge) et activer le clignotement uniquement des leds oranges.
Schema du feu tricolore avec un bouton poussoir
Nous gardons le schema du feu tricolore
Et ajoutons simplement un bouton poussoir ou un interrupteur
- 6 resistances de 220 Ohms
- 2 leds vertes
- 2 leds oranges
- 2 leds rouges
- 1 resistance de 1KOhms
- 1 bouton poussoir ou 1 interrupteur
Cablage du feu tricolore avec un bouton poussoir
Nous gardons le cablage du feu tricolore
Et ajoutons simplement un bouton poussoir ou un interrupteur
- 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
- 3v3 - 1 - résistance 1kOhms - une patte du bouton poussoir et GPIO26 - 37
- Ground - 39 - L'autre patte du bouton poussoir
Fonctionnement
Le feu tricolore fonctionne (vert, orange, rouge, etc ...)
Une pression sur le bouton poussoir ou l'interrupteur, le feu tricolore s'arrête (vert, orange, rouge, etc ...) et les leds oranges clignotent
Une autre pression sur le bouton poussoir ou l'interrupteur, le clignotement des leds oranges s'arrêtent et le feu tricolore se remets en marche (vert, orange, rouge, etc ...).
Programme python
Copier le code ci-dessous dans le fichier tricolor-button-led-blink-BOARD.py
- import RPi.GPIO as GPIO
- import time
- # La numerotation choisie pour nommer les broches
- GPIO.setmode(GPIO.BOARD)
- GPIO.setwarnings(False) # Evite l'affichage des messages d'erreur inutile
- #Definition des varibles
- # Exemple: GPIO16 = 37
- button = 37
- 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 = 1 # Temporisation
- #Broche pour la sortie pour les LED
- 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)
- # Broche pour l'entree pour le bouton poussoir
- GPIO.setup(button, GPIO.IN)
- print('Execution du programme')
- print(' ')
- print('Appuyer sur l\'''interrupteur pour stopper le feu tricolore')
- print('Et faire clignoter uniquement les leds oranges')
- try:
- while 1:
- if (GPIO.input(button) == 1):
- # Feu tricolore
- GPIO.output(vert1, 1)
- GPIO.output(orange1, 0)
- GPIO.output(rouge1, 0)
- GPIO.output(vert2, 0)
- GPIO.output(orange2, 0)
- GPIO.output(rouge2, 1)
- time.sleep(tempo)
- # ----
- GPIO.output(vert1, 0)
- GPIO.output(orange1, 1)
- GPIO.output(rouge1, 0)
- GPIO.output(vert2, 0)
- GPIO.output(orange2, 0)
- GPIO.output(rouge2, 1)
- time.sleep(tempo)
- # ----
- GPIO.output(vert1, 0)
- GPIO.output(orange1, 0)
- GPIO.output(rouge1, 1)
- GPIO.output(vert2, 1)
- GPIO.output(orange2, 0)
- GPIO.output(rouge2, 0)
- time.sleep(tempo)
- # ----
- GPIO.output(vert1, 0)
- GPIO.output(orange1, 0)
- GPIO.output(rouge1, 1)
- GPIO.output(vert2, 0)
- GPIO.output(orange2, 1)
- GPIO.output(rouge2, 0)
- time.sleep(tempo)
- else :
- # Mise à 0 de toutes les leds
- GPIO.output(vert1, 0)
- GPIO.output(orange1, 0)
- GPIO.output(rouge1, 0)
- GPIO.output(vert2, 0)
- GPIO.output(orange2, 0)
- GPIO.output(rouge2, 0)
- # Clignotement des leds oranges
- GPIO.output(orange2, 0)
- GPIO.output(orange1, 0)
- time.sleep(tempo)
- GPIO.output(orange2, 1)
- GPIO.output(orange1, 1)
- time.sleep(tempo)
- except:
- # Eteindre toutes les leds à la fin du programme
- GPIO.output(vert1, 0)
- GPIO.output(orange1, 0)
- GPIO.output(rouge1, 0)
- GPIO.output(vert2, 0)
- GPIO.output(orange2, 0)
- GPIO.output(rouge2, 0)
- GPIO.cleanup()
- print('Arret du programme')
Pour exécuter le programme, faire Run / Run Module ou F5 dans la fenêtre tricolor-button-led-blink-BOARD.py
Le feu tricolore fonctionne (vert, orange, rouge, etc ...)
Vous appuyez sur le bouton poussoir ou l'interrupteur, le feu tricolore s'arrête et les leds oranges clignotent.
Vous appuyez au nouveau sur le bouton poussoir ou l'interrupteur, le feu tricolore redémarre (vert, orange, rouge, etc ...) et les leds oranges s'arrêtent.