gpiozero -> 运动传感器和 LED



我正试图遵循这个例子。使用以下两行,一切正常

pir.when_motion = led.on
pir.when_no_motion = led.off

但是当我为pir.when_motion分配一个事件处理程序时,事情就停止了

我可以看到函数turnOnLedturnOffLed被调用,但看不到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的问题

最新更新