Hallo
Ich möchte per schalter ein GPIO schalten der ein script startet.
Dieses script schaltet der reihe nach die GPIO´s 21 20 26 16 19 13 jeweils pit einer kleinen pause
wird der schalter unterbrochen gehen die GPIO´s der reihe nach wieder aus.
Der zweite schalter macht genau das selbe nur das die GPIO´s andersherum geschaltet werden.
13 19 16 26 20 21.
Dies brauche ich für meine Auffahrt in der 6 Lampen verbaut sind. Drei links drei rechts.
Am anfang der auffahrt ist ein Bewegungsmelder welcher als erster schalter dienen soll.
Am Ende der Auffart ist ebenso ein Bewegungsmelder der als zweiter schalter dienen soll.
Diese werden über ein Octokopler geschaltet.
Der erst geschaltetet BM soll priorität haben.
Asls Schalter am Raspberry habe ich GPIO 4 und 17 mit einem Wiederstand gegen masse verbaut.
Die anderen GPIO´s für die Lampen schalten je ein Relais.
Ich habe ein Skipt welches aber leider nicht funktioniert bzw. wennder eingang geschaltet wird passiert nichts.
Evtl kann mir dabei einer helfen meine schaltung fertig zu schreiben,
MFG
#!/usr/bin/env python
#coding: utf8
import time
import RPi.GPIO as GPIO
# I/Os fuer die Melder (unten, oben)
Melder = [17, 7]
# I/Os fuer die Lampen (von unten nach oben)
LampenRechts = [13, 19, 21]
LampenLinks = [16, 20, 26]
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
UpDirection = False
DownDirection = False
def GPIO_Callback(Channel):
# Wurde der Melder aktiviert oder ist er deaktiviert worden?
State = GPIO.input(Channel)
# Melder 1 (unten) aktiviert -> Schalte Lampen von unten nach oben an
if(Channel == Melder[0]):
UpDirection = True
# Melder 2 (oben) aktiviert -> Schalte Lampen von oben nach unten an
elif(Channel == Melder[1]):
DownDirection = True
# Eingaenge fuer die Bewegungsmelder setzen
for Eingang in Melder:
GPIO.setup(Eingang, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.add_event_detect(Eingang, GPIO.BOTH, callback = GPIO_Callback, bouncetime = 2000)
# Ausgaenge fuer die Lampen setzen
for Rechts, Links in zip(LampenRechts, LampenLinks):
GPIO.setup(Rechts, GPIO.OUT)
GPIO.output(Rechts, GPIO.LOW)
GPIO.setup(Links, GPIO.OUT)
GPIO.output(Links, GPIO.LOW)
if(__name__ == "__main__"):
while(True):
if(UpDirection):
# Schalte die Lampen von unten nach oben ein
for Rechts, Links in zip(LampenRechts, LampenLinks):
GPIO.output(Rechts, GPIO.HIGH)
GPIO.output(Links, GPIO.HIGH)
print("Schalte Lampe {} - {} an".format(Rechts, Links))
time.sleep(0.5)
# Schalte die Lampen von oben nach unten aus
for Rechts, Links in zip(LampenRechts[::-1], LampenLinks[::-1]):
GPIO.output(Rechts, GPIO.LOW)
GPIO.output(Links, GPIO.LOW)
print("Schalte Lampe {} - {} aus".format(Rechts, Links))
time.sleep(0.5)
UpDirection = False
elif(DownDirection):
# Schalte die Lampen von oben nach unten ein
for Rechts, Links in zip(LampenRechts[::-1], LampenLinks[::-1]):
GPIO.output(Rechts, GPIO.HIGH)
GPIO.output(Links, GPIO.HIGH)
print("Schalte Lampe {} - {} an".format(Rechts, Links))
time.sleep(0.5)
# Schalte die Lampen von unten nach oben aus
for Rechts, Links in zip(LampenRechts, LampenLinks):
GPIO.output(Rechts, GPIO.LOW)
GPIO.output(Links, GPIO.LOW)
print("Schalte Lampe {} - {} aus".format(Rechts, Links))
time.sleep(0.5)
DownDirection = False
GPIO.cleanup()
Alles anzeigen