0

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

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_no_motion事件会在大约 4 秒后立即触发。pir.when_motion关于什么可能是错误的任何指示?

4

1 回答 1

0

这是一个非常小的错误。

在函数内部turnOnLed我应该调用函数led.on

通过替换解决led.on了问题led.on()

于 2020-08-18T03:40:38.357 回答