|
@@ -0,0 +1,38 @@
|
|
|
+#!/usr/bin/env python
|
|
|
+#coding: utf8
|
|
|
+
|
|
|
+### Dieses Programm soll einen Alarm ausgeben, wenn es zu einem Wassereinbruch kommt.
|
|
|
+### Dazu müssen zwei Kontakte in geringem Abstand auf dem Boden positioniert werden.
|
|
|
+### Bei Kontakt mit Wasser schließt sich der Stromkreis und der High-Pegel des Ausgangspins wird auf den Eingangspin übertragen.
|
|
|
+
|
|
|
+import time
|
|
|
+import RPi.GPIO as GPIO
|
|
|
+
|
|
|
+# Zählweise der Pins festlegen
|
|
|
+GPIO.setmode(GPIO.BOARD)
|
|
|
+
|
|
|
+# Ausgang festlegen und einschalten
|
|
|
+Output = 22 # GPIO25 = Pin 22
|
|
|
+GPIO.setup(Output, GPIO.OUT)
|
|
|
+GPIO.output(22, GPIO.HIGH) # High-Pegel dauerhaft ausgeben
|
|
|
+
|
|
|
+# Eingang festlegen
|
|
|
+Input = 18 # GPIO24 = Pin 18
|
|
|
+GPIO.setup(Input, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
|
|
|
+time.sleep(1)
|
|
|
+print GPIO.input(Input) # Startzustand abfragen
|
|
|
+
|
|
|
+# Ereignis-Funktion für Eingang HIGH
|
|
|
+def Wassermeldung(Input):
|
|
|
+ print ("Wasseralarm!")
|
|
|
+
|
|
|
+# Ereignis deklarieren
|
|
|
+# Fallende Flanke: GPIO.FALLING, steigende Flanke: GPIO.RISING, beide Flanken: GPIO.BOTH
|
|
|
+GPIO.add_event_detect(Input, GPIO.RISING, callback = Wassermeldung, bouncetime = 200)
|
|
|
+
|
|
|
+# Eigentlicher Programmablauf
|
|
|
+while 1:
|
|
|
+ time.sleep(1)
|
|
|
+
|
|
|
+GPIO.cleanup()
|
|
|
+
|