#!/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()