Ich verwende die GPIO-Pins auf meinem Raspberry Pi mit einem PIR-Sensor, um Bewegung zu erkennen. Wenn der Sensor eine Bewegung erkennt, möchte ich die Software auf andere Funktionen verschieben.Raspberry Pi- GPIO Ereignisse in Python
Im Moment, um Bewegungen zu erkennen, läuft mein Programm ständig in einer Schleife, während es darauf wartet, dass Bewegung erkannt wird. Während dies im Moment funktioniert, wird dies für die Zukunft unglaublich ineffizient sein und ich hoffe, dass ich dies verbessern kann, indem ich es einer Veranstaltung zuweise.
Gibt es eine Möglichkeit, meine GPIO-Eingabe an ein Ereignis zu binden, das vom Programm erkannt wird, ohne eine Schleife manuell auszuführen.
Hier ist meine Stromschleife für die Detektion motion:
var = 1
counter = 0
while var == 1:
if GPIO.input(7):
counter += 1
time.sleep(0.5)
else:
counter = 0
time.sleep(1)
if counter >= 3:
print "Movement!"
captureImage()
time.sleep(20)
Der Zähler und zum Erfassen Bewegung mehrfach verwendet wird, um die Zahl der Fehlalarme zu reduzieren, dass der Sensor aufnimmt.
Würde diese Methode mit einer GUI arbeiten? Ich möchte die Bewegungsdetektorklasse aufrufen, die diese Schleife von meiner GUI aus ausführt, aber mit der Schleife stürzt sie nur die GUI ab. Wenn ich dies mit dem Thread verwende, führt dies dazu, dass die Bewegungserkennungsschleife im Hintergrund ausgeführt wird, während die GUI auf die zugehörige Eingabe wartet? – Stefoth
@Stefoth das ist so ziemlich wie GUI-Programmierung funktioniert. Ihre GUI wird in ihrem eigenen Thread ausgeführt und der Bewegungserkennungscode wird in ihrem eigenen ausgeführt. – msvalkon