cailloute
Posts: 19
Joined: Tue Jun 12, 2018 1:30 pm
Location: France

Bande led dans les escaliers

Mon Apr 15, 2019 5:24 pm

Bonsoir,
je pense ne pas m’être tromper en postant ici ma recherche "d'aide".
Je m'explique.
J'ai un RPI 3B+ / une carte 16 relais alimenté en externe avec GND en commun du RPI / 2 détecteur de mouvement / 14 bandes LED alimentées par un transfo adapté
J'ai essayer de trouver/créer un script python (les autres types je ne me suis pas encore aventuré) pour avoir les scénarios suivant:
Passage devant le capteur bas > allumage des marches (chaque marche est alimenté par un des relais de la carte 16) sens montant > attente un délai T (je pense 30s) > extinction des marches dans le sens montant
Passage devant le capteur haut> allumage des marches sens descendant > attente un délai T (je pense 30s) > extinction des marches dans le sens descendant

Malheureusement mon "projet" ne fonctionne pas. Les relais s'allument tous dés lancement du script, lance l'extinction/allumage des relais sans comprendre comment. J'ai pensé à la carte relais qui "inversé les états des relais", j'ai donc essayer de mettre les HIGH en LOW mais même resultat.

Ci joint un photo de mon instal à blanc.
IMG_1656.jpg
IMG_1656.jpg (154.29 KiB) Viewed 756 times
et ci après mon script:

---------------------------------------------------------

Code: Select all

#!/usr/bin/python
import time
import os
import RPi.GPIO as io
io.setmode(io.BCM)

# ECLAIRAGE DES MARCHES
io.setup(15, io.OUT) #marche 01
io.output(15, io.LOW)
io.setup(2, io.OUT) #marche 02
io.output(2, io.LOW)
io.setup(3, io.OUT) #marche 03
io.output(3, io.LOW)
io.setup(4, io.OUT) #marche 04
io.output(4, io.LOW)
io.setup(5, io.OUT) #marche 05
io.output(5, io.LOW)
io.setup(6, io.OUT) #marche 06
io.output(6, io.LOW)
io.setup(7, io.OUT) #marche 07
io.output(7, io.LOW)
io.setup(8, io.OUT) #marche 08
io.output(8, io.LOW)
io.setup(9, io.OUT) #marche 09 
io.output(9, io.LOW)
io.setup(10, io.OUT) #marche 10
io.output(10, io.LOW)
io.setup(11, io.OUT) #marche 11
io.output(11, io.LOW)
io.setup(12, io.OUT) #marche 12
io.output(12, io.LOW)
io.setup(13, io.OUT) #marche 13
io.output(13, io.LOW)
io.setup(14, io.OUT) #garde corps
io.output(14, io.LOW)
io.setup(21, io.IN) # Capteur montee
io.setup(20, io.IN) # Capteur descente

while 1:
try:
# MONTEE
if io.input(21):
io.output(14, io.HIGH)
time.sleep(0.1)
io.output(15, io.HIGH)
time.sleep(0.5)
io.output(2, io.HIGH)
time.sleep(0.5)
io.output(3, io.HIGH)
time.sleep(0.5)
io.output(4, io.HIGH)
time.sleep(0.5)
io.output(5, io.HIGH)
time.sleep(0.5)
io.output(6, io.HIGH)
time.sleep(0.5)
io.output(7, io.HIGH)
time.sleep(0.5)
io.output(8, io.HIGH)
time.sleep(0.5)
io.output(9, io.HIGH)
time.sleep(0.5)
io.output(10, io.HIGH)
time.sleep(0.5)
io.output(11, io.HIGH)
time.sleep(0.5)
io.output(12, io.HIGH)
time.sleep(0.5)
io.output(13, io.HIGH)
time.sleep(1)
io.output(15, io.LOW)
time.sleep(1)
io.output(2, io.LOW)
time.sleep(1)
io.output(3, io.LOW)
time.sleep(1)
io.output(4, io.LOW)
time.sleep(1)
io.output(5, io.LOW)
time.sleep(1)
io.output(6, io.LOW)
time.sleep(1)
io.output(7, io.LOW)
time.sleep(1)
io.output(8, io.LOW)
time.sleep(1)
io.output(9, io.LOW)
time.sleep(1)
io.output(10, io.LOW)
time.sleep(1)
io.output(11, io.LOW)
time.sleep(1)
io.output(12, io.LOW)
time.sleep(1)
io.output(13, io.LOW)
time.sleep(1)
io.output(14, io.LOW)

# DESCENTE
if io.input(20):
io.output(14, io.HIGH)
time.sleep(0.1)
io.output(13, io.HIGH)
time.sleep(0.5)
io.output(12, io.HIGH)
time.sleep(0.5)
io.output(11, io.HIGH)
time.sleep(0.5)
io.output(10, io.HIGH)
time.sleep(0.5)
io.output(9, io.HIGH)
time.sleep(0.5)
io.output(8, io.HIGH)
time.sleep(0.5)
io.output(7, io.HIGH)
time.sleep(0.5)
io.output(6, io.HIGH)
time.sleep(0.5)
io.output(5, io.HIGH)
time.sleep(0.5)
io.output(4, io.HIGH)
time.sleep(0.5)
io.output(3, io.HIGH)
time.sleep(0.5)
io.output(2, io.HIGH)
time.sleep(0.5)
io.output(15, io.HIGH)
time.sleep(1)
io.output(13, io.LOW)
time.sleep(0.5)
io.output(12, io.LOW)
time.sleep(0.5)
io.output(11, io.LOW)
time.sleep(0.5)
io.output(10, io.LOW)
time.sleep(0.5)
io.output(9, io.LOW)
time.sleep(0.5)
io.output(8, io.LOW)
time.sleep(0.5)
io.output(7, io.LOW)
time.sleep(0.5)
io.output(6, io.LOW)
time.sleep(0.5)
io.output(5, io.LOW)
time.sleep(0.5)
io.output(4, io.LOW)
time.sleep(0.5)
io.output(3, io.LOW)
time.sleep(0.5)
io.output(2, io.LOW)
time.sleep(0.5)
io.output(15, io.LOW)
time.sleep(30)
io.output(14, io.LOW)

time.sleep(1)

except KeyboardInterrupt:
io.cleanup()
---------------------------------------------------------

Dans l'attente de vos lumières.
:(
RPI 3B+ / RPI Zero W

epoch1970
Posts: 3107
Joined: Thu May 05, 2016 9:33 am
Location: Paris, France

Re: Bande led dans les escaliers

Mon Apr 15, 2019 5:52 pm

C''est peut être le format du post uniquement, mais Python est (très) sensible aux indentations ; un exemple de boucle while/if
"S'il n'y a pas de solution, c'est qu'il n'y a pas de problème." Les Shadoks, J. Rouxel

jelopo
Posts: 1477
Joined: Wed Oct 17, 2012 7:53 pm

Re: Bande led dans les escaliers

Sun Apr 21, 2019 3:11 pm

Bonjour,

Les capteurs sont peut être trop sensibles et trop proches de perturbations potentielles sur la maquette.

Essayer de câbler des fils plus long d'une part, et ajouter un print dans le programme pour afficher lorsque l'un et l'autre des capteurs détectent un mouvement.

Edit: Sinon, autre astuce pour dépanner, modifier le programme pour ne commander qu'un seul relais quand le capteur bas et déclenché et un autre relais pour le capteur haut.

A+

cailloute
Posts: 19
Joined: Tue Jun 12, 2018 1:30 pm
Location: France

Re: Bande led dans les escaliers

Sun Apr 21, 2019 4:37 pm

jelopo wrote:
Sun Apr 21, 2019 3:11 pm
Bonjour,

Les capteurs sont peut être trop sensibles et trop proches de perturbations potentielles sur la maquette.

Essayer de câbler des fils plus long d'une part, et ajouter un print dans le programme pour afficher lorsque l'un et l'autre des capteurs détectent un mouvement.

Edit: Sinon, autre astuce pour dépanner, modifier le programme pour ne commander qu'un seul relais quand le capteur bas et déclenché et un autre relais pour le capteur haut.

A+
Bonne idée tes astuces.
Malheureusement ma fille a malencontreusement marché sur ma maquette.
Écrasant la carte relai. Lorsque je branche le tout rien ne s’allume, lorsque je déconnecte les 5V rpi/relais, le rpi se met en route. Sinon il veut pas.
En plus un gros condo à été dessoudé de lui même.
Donc, je vais commander 2 autres cartes relais pour refaire mon projet.
Je vous tiens au jus.
Merci encore.
RPI 3B+ / RPI Zero W

cailloute
Posts: 19
Joined: Tue Jun 12, 2018 1:30 pm
Location: France

Re: Bande led dans les escaliers

Wed May 01, 2019 3:54 pm

Bonsoir à tous.
J'ai reçu ma carte 16 relais commandé sur KUBII.

https://www.kubii.fr/composants-raspber ... results=47

En lançant le même script, tout les relais se mettent en "marche" mais ne s'allument, ni s’éteignent progressivement.

J'ai pu refaire un peu le script.
Les "print" fonctionnent nickel, mais pas de fonctionnement progressif des relais.
J'ai bien raccordé la carte relais en 12V.

Code: Select all

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
PIR = 20
GPIO.setup(PIR, GPIO.IN)
# liste des pin en sorties

pinOut = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]

# passage des pin en sorties en etat haut

for i in pinOut: 
    GPIO.setup(i, GPIO.OUT) 
    GPIO.output(i, GPIO.LOW)

# temps attente entre marche
SleepTimeL = 0.5
SleepTimeM = 5


try:
    print("PIR Module Test")
    print(" (CTRL+C to exit)")
    time.sleep(1)
    print "Ready"
    while True:
        if GPIO.input(PIR):
           	print("Motion detected! ")
	    	GPIO.output(15, GPIO.HIGH)
		print "GARDE CORPS OK"
		time.sleep(SleepTimeL);
		GPIO.output(2, GPIO.HIGH)
		print "MARCHE 1 OK"
		time.sleep(SleepTimeL); 
		GPIO.output(3, GPIO.HIGH)
		print "MARCHE 2 OK"
		time.sleep(SleepTimeL);  
		GPIO.output(4, GPIO.HIGH)
		print "MARCHE 3 OK"
		time.sleep(SleepTimeL);
		GPIO.output(5, GPIO.HIGH)
		print "MARCHE 4 OK"
		time.sleep(SleepTimeL);
		GPIO.output(6, GPIO.HIGH)
		print "MARCHE 5 OK"
		time.sleep(SleepTimeL);
		GPIO.output(7, GPIO.HIGH)
		print "MARCHE 6 OK"
		time.sleep(SleepTimeL);
		GPIO.output(8, GPIO.HIGH)
		print "MARCHE 7 OK"
		time.sleep(SleepTimeL);
		GPIO.output(9, GPIO.HIGH)
		print "MARCHE 8 OK"
		time.sleep(SleepTimeL);
		GPIO.output(10, GPIO.HIGH)
		print "MARCHE 9 OK"
		time.sleep(SleepTimeL); 
		GPIO.output(11, GPIO.HIGH)
		print "MARCHE 10 OK"
		time.sleep(SleepTimeL);
 		GPIO.output(12, GPIO.HIGH)
		print "MARCHE 11 OK"
		time.sleep(SleepTimeL);
		GPIO.output(13, GPIO.HIGH)
		print "MARCHE 12 OK"
		time.sleep(SleepTimeL);
		GPIO.output(14, GPIO.HIGH)
		print "MARCHE 13 OK"
		time.sleep(SleepTimeM);
		GPIO.output(15, GPIO.HIGH)
		print "GARDE CORPS OFF"
		time.sleep(SleepTimeL);
		GPIO.output(2, GPIO.LOW)
		print "MARCHE 1 OFF"
		time.sleep(SleepTimeL); 
		GPIO.output(3, GPIO.LOW)
		print "MARCHE 2 OFF"
		time.sleep(SleepTimeL);  
		GPIO.output(4, GPIO.LOW)
		print "MARCHE 3 OFF"
		time.sleep(SleepTimeL);
		GPIO.output(5, GPIO.LOW)
		print "MARCHE 4 OFF"
		time.sleep(SleepTimeL);
		GPIO.output(6, GPIO.LOW)
		print "MARCHE 5 OFF"
		time.sleep(SleepTimeL);
		GPIO.output(7, GPIO.LOW)
		print "MARCHE 6 OFF"
		time.sleep(SleepTimeL);
		GPIO.output(8, GPIO.LOW)
		print "MARCHE 7 OFF"
		time.sleep(SleepTimeL);
		GPIO.output(9, GPIO.LOW)
		print "MARCHE 8 OFF"
		time.sleep(SleepTimeL);
		GPIO.output(10, GPIO.LOW)
		print "MARCHE 9 OFF"
		time.sleep(SleepTimeL); 
		GPIO.output(11, GPIO.LOW)
		print "MARCHE 10 OFF"
		time.sleep(SleepTimeL);  
		GPIO.output(12, GPIO.LOW)
		print "MARCHE 11 OFF"
		time.sleep(SleepTimeL);
		GPIO.output(13, GPIO.LOW)
		print "MARCHE 12 OFF"
		time.sleep(SleepTimeL);
		GPIO.output(14, GPIO.LOW)
		print "MARCHE 13 OFF"
		time.sleep(10)


        time.sleep(0.1)
except KeyboardInterrupt:
    print("Quitting")
    GPIO.cleanup()
Une idée?
RPI 3B+ / RPI Zero W

jelopo
Posts: 1477
Joined: Wed Oct 17, 2012 7:53 pm

Re: Bande led dans les escaliers

Fri May 03, 2019 5:37 am

Bonjour,

A la lecture du script, tout me semble bon.
Il serait peu être utile de rajouter un "timestamp" pour chaque print

Code: Select all

    now = time.strftime('%H:%M:%S')
    print "%s - GARDE CORPS OK"
Si il y a bien un décalage en temps avec les prints, c'est probablement un soucis de câblage.

A+

cailloute
Posts: 19
Joined: Tue Jun 12, 2018 1:30 pm
Location: France

Re: Bande led dans les escaliers

Fri May 03, 2019 7:04 am

Salut jelopo
En lancer les commandes

Code: Select all

gpio write (pin d’un des relais) 1
ça fait pourtant fonctionner le relais.
RPI 3B+ / RPI Zero W

JumpZero
Posts: 946
Joined: Thu Mar 28, 2013 7:35 pm
Location: 127.0.0.1

Re: Bande led dans les escaliers

Fri May 03, 2019 7:15 am

cailloute wrote:
Fri May 03, 2019 7:04 am
Salut jelopo
En lancer les commandes

Code: Select all

gpio write (pin d’un des relais) 1
ça fait pourtant fonctionner le relais.
Oui mais dans ton programme python tu utilises

Code: Select all

GPIO.output(14, GPIO.LOW)
As-tu essayé cette commande directement dans l’interpréteur Python?
Autrement +1 @jelopo decompose ton programme, met des print(s), coupe des bouts, pour voir ce qui ce passe.

cailloute
Posts: 19
Joined: Tue Jun 12, 2018 1:30 pm
Location: France

Re: Bande led dans les escaliers

Fri May 03, 2019 7:48 am

Qu’est-ce que tu voudrais que j’essaie « dans l’interpréteur Python?

Dans mon programme les print fonctionnent.
JumpZero wrote:
Fri May 03, 2019 7:15 am
cailloute wrote:
Fri May 03, 2019 7:04 am

As-tu essayé cette commande directement dans l’interpréteur Python?
Autrement +1 @jelopo decompose ton programme, met des print(s), coupe des bouts, pour voir ce qui ce passe.
RPI 3B+ / RPI Zero W

cailloute
Posts: 19
Joined: Tue Jun 12, 2018 1:30 pm
Location: France

Re: Bande led dans les escaliers

Fri May 03, 2019 11:37 am

Aussi, est-ce normal que les gpio reppassent en in, apres l'execution du script?
avnt.jpg
avnt.jpg (108.9 KiB) Viewed 561 times

apres.jpg
apres.jpg (108.04 KiB) Viewed 561 times
RPI 3B+ / RPI Zero W

jelopo
Posts: 1477
Joined: Wed Oct 17, 2012 7:53 pm

Re: Bande led dans les escaliers

Mon May 06, 2019 5:31 pm

Bonjour,

L'erreur est juste ! C'est ce qui est demandé au script avec "GPOI.cleanup()"

A+

blanca12
Posts: 2
Joined: Wed Nov 07, 2018 9:35 pm

Re: Bande led dans les escaliers

Fri May 17, 2019 12:06 am

C'est peut être le format du post uniquement, mais Python est sensible aux indentations..


________________________________________________________
Sarkari Result Pnr Status 192.168.1.1

Return to “Français”