Grüß dich Janic,
Gegenfrage, hast du das Script mal getestet?
Importe kommen immer zum Anfang.
Kommentiere nicht was offensichtlich ist. Das hilft nicht und macht deinen Code unleserlicher.
Du hast Variablen die du nicht nutzt, wie kontroll = 5 # Kontrollleuchte oder bedienteecken = "alle".
bedienteecken = "alle" lässt du nur mittels print() ausgeben.
Die Variable bewegungsstatus haste 2x vergeben und unterschiedlichen Werte zugewiesen.
Die Continues können weg und deine if`s sind seltsam verschachtelt.
Deine Schleife fragt auf Low ab. Dein Bewegungsmelder sendet aber ein High. Theoretisch müsste deine Schleife immer dann laufen wenn keine Bewegung erkannt wurde.
Ich hab das alles nur überflogen und auch nicht getestet!
import time
import random
import RPi.GPIO as GPIO
# config. Pins über GPIO-Nummer ansteuern
GPIO.setmode(GPIO.BCM)
Led_lu = 26 # links unten
Led_lo = 19 # links oben
Led_ru = 13 # rechts unten
Led_ro = 6 # rechts oben
# OUT_Pin konfiguration
GPIO.setup(Led_lu, GPIO.OUT)
GPIO.setup(Led_lo, GPIO.OUT)
GPIO.setup(Led_ru, GPIO.OUT)
GPIO.setup(Led_ro, GPIO.OUT)
# Bewegungsmelder
BMelder = 11
GPIO.setup(BMelder, GPIO.IN)
# Variabelen Definition
bewegungsstatus = 0
# Verzögerungs Einstellung (in Sekunden)
verzoegerung = 1
#Starvorgang
print("Startvorgang...")
time.sleep(0.25)
print(bedienteecken)
time.sleep(0.25)
print("Kontrollieren sie ob alle LEDs leuchten.")
GPIO.output(Led_lu, GPIO.HIGH)
GPIO.output(Led_lo, GPIO.HIGH)
GPIO.output(Led_ru, GPIO.HIGH)
GPIO.output(Led_ro, GPIO.HIGH)
time.sleep(0.5)
GPIO.output(Led_lu, GPIO.LOW)
GPIO.output(Led_lo, GPIO.LOW)
GPIO.output(Led_ru, GPIO.LOW)
GPIO.output(Led_ro, GPIO.LOW)
time.sleep(0.5)
GPIO.output(Led_lu, GPIO.HIGH)
GPIO.output(Led_lo, GPIO.HIGH)
GPIO.output(Led_ru, GPIO.HIGH)
GPIO.output(Led_ro, GPIO.HIGH)
time.sleep(0.5)
GPIO.output(Led_lu, GPIO.LOW)
GPIO.output(Led_lo, GPIO.LOW)
GPIO.output(Led_ru, GPIO.LOW)
GPIO.output(Led_ro, GPIO.LOW)
print("Starvorgang beendet...")
while True:
if GPIO.input(BMelder)==1:
# Zufalls Generator
x = randint(1, 4)
if x == 1:
time.sleep(verzoegerung)
GPIO.output(lu, GPIO.HIGH)
time.sleep(1.5)
GPIO.output(lu, GPIO.LOW)
elif x == 2:
time.sleep(verzoegerung)
GPIO.output(lo, GPIO.HIGH)
time.sleep(1.5)
GPIO.output(lu, GPIO.LOW)
elif x == 3:
time.sleep(verzoegerung)
GPIO.output(ru, GPIO.HIGH)
time.sleep(1.5)
GPIO.output(lu, GPIO.LOW)
else:
time.sleep(verzoegerung)
GPIO.output(ro, GPIO.HIGH)
time.sleep(1.5)
GPIO.output(lu, GPIO.LOW)
time.sleep(1)
Alles anzeigen
Kann sein das da noch ein cleanup() rein muss.
Generell solltest du auf Rpi.GPIO verzichten und stattdessen Gpiozero nutzen.
Das ist viel schöner.
Teste deine Scripte, wenn du Fehlermeldungen bekommst kannst du nachfragen.
Meistens sieht man dann schon selbst den Fehler.