Dies ist eine mobil optimierte Seite, die schnell lädt. Wenn Sie die Seite ohne Optimierung laden möchten, dann klicken Sie auf diesen Text.

( gelöst ) Relais ansteuern

    Nobody is reading this thread right now.
hi @sralus,
ich bin leider noch nicht dazu gekommen mich damit näher zu beschäftigen ... mit den 2 Sensoren wird das ganze etwas kniffeliger ... Du könntest aber schon mal alle möglichen Fälle gedanklich durchspielen und versuchen diese hier niederzuschreiben ...
Nach dem Motto, was soll passieren wenn der 1. Sensor "Aktivität" meldet und der 2. meldet nichts ...
.. was soll passieren, wenn der 1. und 2. Sensor "Aktivität" melden ...
.. was soll passieren, wenn wenn beide Sensoren "Aktivität" melden und dann der 1. oder 2. Sensor "Inaktivität" meldet
Je mehr Fälle man hat und je genauer der einzelene Fall beschrieben ist ... umso einfach wird das runter-code'n ... dann ist es quasi nur noch Tipparbeit.
 
Hi
Soweit habe ich bisher ein Prog..
Rennt aber noch nicht wirklich....

Code:
#!/usr/bin/env python
#coding: utf8
import time
import RPi.GPIO as GPIO

# I/Os fuer die Melder (unten, oben)
Melder = [17, 4]

# I/Os fuer die Lampen (von unten nach oben)
Lampen = [13, 16, 19, 20, 21, 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 Ausgang in Lampen:
    GPIO.setup(Ausgang, GPIO.OUT)
    GPIO.output(Ausgang, GPIO.LOW)

if(__name__ == "__main__"):
    while(True):
        if(UpDirection):
            # Schalte die Lampen von unten nach oben ein
            for Lampe in Lampen:
                GPIO.input(Lampe, GPIO.HIGH)
                time.sleep(0.5)
           
            # Schalte die Lampen von oben nach unten aus
            for Lampe in Lampen[::-1]:
                GPIO.output(Lampe, GPIO.LOW)
                time.sleep(0.5)

            UpDirection = False
        elif(DownDirection):
            # Schalte die Lampen von oben nach unten ein
            for Lampe in Lampen[::-1]:
                GPIO.output(Lampe, GPIO.HIGH)
                time.sleep(0.5)

            # Schalte die Lampen von unten nach oben aus
            for Lampe in Lampen:
                GPIO.output(Lampe, GPIO.LOW)
                time.sleep(0.5)

            UpDirection = False

GPIO.cleanup()
 
Zuletzt bearbeitet von einem Moderator:
Für die Nutzung dieser Website sind Cookies erforderlich. Du musst diese akzeptieren, um die Website weiter nutzen zu können. Erfahre mehr…