Der folgende Code ist für einen PIR-Sensor in Python geschrieben.Python if Schleife time.sleep nur einmal ausführen
Was sollte es
tun Wenn der Sensor zum ersten Mal aktivieren war, sollte es einmal für 10 Sekunden warten und dann Druck halten "Intruder erkannt", bis der Sensor = war 0.
was ist eigentlich tun
Anstatt warten 10s einmal, der Code unten warten immer 10s, wenn der Pir-Sensor Tigger war.
Warum ist das?
import RPi.GPIO as GPIO
import time
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.IN) #Read output from PIR motion sensor
GPIO.setup(3, GPIO.OUT) #LED output pin
while True:
i=GPIO.input(11)
if i==0: #When output from motion sensor is LOW
print "No intruders",i
GPIO.output(3, 0) #Turn OFF LED
time.sleep(0.1)
elif i==1: #When output from motion sensor is HIGH
time.sleep(10) #This should be only run once when the pir sensor is trigger
print "Intruder detected",i
GPIO.output(3, 1) #Turn ON LED
time.sleep(0.1)
Sind Sie sicher, dass 'GPIO.input (11)' auf Null zurückgeht? Vielleicht mache ich einen 'print i' vor dem' if' um das zu überprüfen. –
Frage ist einfach oder sogar albern, aber das Format der Frage ist gut. Es zeigt deutlich das erwartete Verhalten und der aktuelle Verhalten mit einem Code-Snippet. Ich denke nicht, dass es abgelehnt werden sollte. – Sraw