Python if loop time.sleep仅执行一次
下面的代码是用Python编写的PIR传感器代码 它应该做什么 当传感器第一次被激活时,它应该等待10秒钟一次,然后继续打印检测到的入侵者,直到传感器=0 他们实际上在做什么 当pir传感器为跳跳虎时,下面的代码不是等待10秒一次,而是等待10秒一次 为什么呢Python if loop time.sleep仅执行一次,python,Python,下面的代码是用Python编写的PIR传感器代码 它应该做什么 当传感器第一次被激活时,它应该等待10秒钟一次,然后继续打印检测到的入侵者,直到传感器=0 他们实际上在做什么 当pir传感器为跳跳虎时,下面的代码不是等待10秒一次,而是等待10秒一次 为什么呢 import RPi.GPIO as GPIO import time GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) GPIO.setup(11, GPIO.IN) #R
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)
只要记住如果是Triggerrd:
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
wasTriggered = False # not yet triggered
while True:
i=GPIO.input(11)
if i == 0: # When output from motion sensor is LOW
print "No intruders",i
wasTriggered = False # reset trigger if True else does nothing
GPIO.output(3, 0) # Turn OFF LED
time.sleep(0.1)
elif i == 1: # When output from motion sensor is HIGH
if wasTriggered == False: # already triggered ?
time.sleep(10) # only run once when the pir sensor is trigger
print "Intruder detected",i
GPIO.output(3, 1) # Turn ON LED
wasTriggered = True # set was triggered
time.sleep(0.1)
这将创建一个内存-只有当传感器报告针脚11上有一个0时,它才会重置。您可能希望切换Led变为红色+输出文本,并四处休眠以使其更加快速-这意味着它将立即对传感器的变化作出反应,然后暂停10秒而不是暂停10秒,然后切换灯光和打印文本,这将断开Act->react序列。您确定GPIO.input11会返回到零也许在检查if之前打印一个i。问题很简单,甚至很愚蠢,但问题的格式很好。它通过一个代码片段清楚地显示了预期的行为和当前的行为。我不认为它应该被否决。我正试图在警报触发前有10秒的延迟。所以,切换led+输出文本和四处睡眠将不起作用。@但是如果你有一个这样的用例-好的,从守卫监视入侵者的角度来看,这似乎是个坏主意;-我并没有改变事情的方向,所以答案应该是你们想要的