Wassermelder.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. ### Dieses Programm soll einen Alarm ausgeben, wenn es zu einem Wassereinbruch kommt.
  4. ### Dazu müssen zwei Kontakte in geringem Abstand auf dem Boden positioniert werden.
  5. ### Bei Kontakt mit Wasser schließt sich der Stromkreis und der High-Pegel des Ausgangspins wird auf den Eingangspin übertragen.
  6. import time
  7. import RPi.GPIO as GPIO
  8. # Zählweise der Pins festlegen
  9. GPIO.setmode(GPIO.BOARD)
  10. # Ausgang festlegen und einschalten
  11. Output = 22 # GPIO25 = Pin 22
  12. GPIO.setup(Output, GPIO.OUT)
  13. GPIO.output(22, GPIO.HIGH) # High-Pegel dauerhaft ausgeben
  14. # Eingang festlegen
  15. Input = 18 # GPIO24 = Pin 18
  16. GPIO.setup(Input, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
  17. time.sleep(1)
  18. print GPIO.input(Input) # Startzustand abfragen
  19. # Ereignis-Funktion für Eingang HIGH
  20. def Wassermeldung(Input):
  21. print ("Wasseralarm!")
  22. # Ereignis deklarieren
  23. # Fallende Flanke: GPIO.FALLING, steigende Flanke: GPIO.RISING, beide Flanken: GPIO.BOTH
  24. GPIO.add_event_detect(Input, GPIO.RISING, callback = Wassermeldung, bouncetime = 200)
  25. # Eigentlicher Programmablauf
  26. while 1:
  27. time.sleep(1)
  28. GPIO.cleanup()