ich schreibe mir ein Programm zur Steuerung eines Hühnerstalls und scheitere schon an den ersten Zeilen.
Ich habe 2 von diesen Hall Sensor:
https://joy-it.net/de/products/SEN-KY003HMS
Ich möchte detektieren, ob der obere, untere oder keine geschlossen ist.
Mein Code soweit:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Benoetigte Module werden importiert und eingerichtet
import RPi.GPIO as GPIO
import time
OPENED_PIN = 21
LOCKED_PIN = 12
# Diese AusgabeFunktion wird bei Signaldetektion ausgefuehrt
def DoorStatus(channel):
print GPIO.input(OPENED_PIN)
print GPIO.input(LOCKED_PIN)
if GPIO.input(OPENED_PIN) and GPIO.input(LOCKED_PIN):
# Tür in der Mitte
print("Tür steht in der Mitte (geöffnet aber nicht ganz oben)")
if not GPIO.input(OPENED_PIN) and GPIO.input(LOCKED_PIN):
# Tür ganz geöffnet
print("Tür ganz geöffnet")
if GPIO.input(OPENED_PIN) and not GPIO.input(LOCKED_PIN):
# Tür geschlossen und verriegelt
print("Tür geschlossen un verriegelt")
def main():
# Initial
DoorStatus('test')
try:
# Loop until users quits with CTRL-C
while True :
time.sleep(0.1)
except KeyboardInterrupt:
# Reset GPIO settings
GPIO.cleanup()
# Tell GPIO library to use GPIO references
GPIO.setmode(GPIO.BCM)
# Set Switch GPIO as input
# Pull high by default
GPIO.setup(OPENED_PIN , GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.add_event_detect(OPENED_PIN, GPIO.BOTH, callback=DoorStatus, bouncetime=200)
GPIO.setup(LOCKED_PIN , GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.add_event_detect(LOCKED_PIN, GPIO.BOTH, callback=DoorStatus, bouncetime=200)
if __name__=="__main__":
main()
Die Platine hat eine LED und diese ist immer korrekt. Aber wenn ich das Programm starte, erhalte ich nicht immer eine korrekte Ausgabe. Manchmal zeigt er offen an, obwohl geschlossen, usw.
Hab ich den Hall Sensor falsch eingebettet?
Danke!