微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

gpiozero-> MotionSensor和LED

如何解决gpiozero-> MotionSensor和LED

我正在尝试遵循this的示例。通过以下两行,一切都按预期运行

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事件在pir.when_motion大约4秒钟后立即被触发,即使连续运动也是如此。关于可能出什么问题的任何指示?

解决方法

这是一个很小的错误。

内部函数turnOnLed应该已经调用函数led.on

通过将led.on替换为led.on()来解决的问题

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。