问题描述
我正在尝试遵循this的示例。通过以下两行,一切都按预期运行
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_no_motion
事件在pir.when_motion
大约4秒钟后立即被触发,即使连续运动也是如此。关于可能出什么问题的任何指示?
解决方法
这是一个很小的错误。
内部函数turnOnLed
应该已经调用函数led.on
通过将led.on
替换为led.on()
来解决的问题