我正试图遵循这个例子。使用以下两行,一切正常
pir.when_motion = led.on
pir.when_no_motion = led.off
但是当我为pir.when_motion
分配一个事件处理程序时,事情就停止了
我可以看到函数turnOnLed
和turnOffLed
被调用,但看不到LED的打开和关闭
下面是我的代码。我遗漏了什么吗?
from gpiozero import MotionSensor , LED
from signal import pause
import time
pir = MotionSensor(4)
led = LED(16)
def logMessage(msg):
print(msg)
def turnOnLed():
logMessage('About to turn on LED...')
led.on
logMessage('LED turned on...')
def turnOffLed():
logMessage('About to turn off LED...')
led.off
logMessage('LED turned off...')
def myfun():
logMessage('Motion detected...')
pir.when_motion = led.on #If I replace led.on with event handler trunOnLed, I cant see LED switching on.
pir.when_no_motion = led.off
logMessage('Before pause')
pause()
此外,我注意到,即使存在连续运动,pir.when_motion
的大约4秒后,pir.when_no_motion
事件也会立即被触发。有什么问题吗?
这是一个非常小的错误。
在函数turnOnLed
中,我本应调用函数led.on
修复了用led.on()
替换led.on
的问题