Sto usando i pin GPIO sul mio Raspberry Pi con un sensore PIR per rilevare il movimento. Quando il sensore rileva il movimento, desidero spostare il software su altre funzioni.Raspberry Pi- GPIO Events in Python
Al momento, per rilevare il movimento, il mio programma è costantemente in esecuzione in un ciclo mentre è in attesa del rilevamento del movimento. Mentre questo funziona al momento, per l'uso in futuro questo sarà incredibilmente inefficiente e spero di migliorare su questo assegnandolo ad un evento.
C'è un modo per associare il mio ingresso GPIO a un evento rilevato dal programma senza eseguire manualmente un ciclo.
Ecco il mio anello di corrente per rilevamento di movimento:
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)
Il contatore e rilevare i tempi di movimento multipla è utilizzato per ridurre il numero di falsi positivi che il sensore raccoglie.
Questo metodo funziona con una GUI? Quello che voglio fare è chiamare la classe del rilevatore di movimento che questo loop stia girando dalla mia GUI, ma con il loop si blocca solo la GUI. Se lo uso con il thread, causerà il loop del motion detection in background mentre la GUI ascolta l'input ad esso associato? – Stefoth
@Stefoth questo è più o meno come funziona la programmazione GUI. La GUI verrà eseguita nel proprio thread e il codice di rilevamento del movimento verrà eseguito autonomamente. – msvalkon