Raspberry - Feux tricolores et bouton poussoir

bouton


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

schema-tricolor-button-led-blink



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

schema-tricolor-button-led-blink




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 (vertorangerouge, 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  (vertorangerouge, etc ...).


Programme python

code-tricolor-button-led-blink
Créer un fichier et nommer le tricolor-button-led-blink-BOARD.py

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.


Code Python tricolor-button-led-blink-BOARD.py

Télécharger le code Python

tricolor-button-led-blink-BOARD.py