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

在另一个按钮调用的函数中,如何检测gpiozero Button按下?

如何解决在另一个按钮调用的函数中,如何检测gpiozero Button按下?

我需要通过按下按钮来触发继电器,并等待信号,然后释放继电器。在下面的示例代码中,该信号为b2。我是Python和Pi的新手,但是很开心! :)

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
from gpiozero import Button
from signal import pause
import time

def first_button():
    print("First pressed")
    while True: #do stuff...
        time.sleep(1)
        print("waiting...")

def second_button():
    print("Second pressed")

b1 = Button(23)
b1.when_pressed = first_button
b2 = Button(24)
b2.when_pressed = second_button

pause()

在按钮调用的现有功能仍在运行时,如何检测按钮按下?

解决方法

在此解决方案中,您只能打开和关闭输出

from gpiozero import Button
from signal import pause
import time

pin = #Set a pin
r = LED(pin)
b1 = Button(23)
b1.when_pressed = r.on
b2 = Button(24)
b2.when_pressed = r.off

pause()

这里有一个线程开始做事:

from gpiozero import Button
from signal import pause
import time
import _thread

run = False
def do_stuff():
    while run: #do stuff...
        time.sleep(1)
        print("waiting...")

def first_button():
    global run
    print("First Pressed")
    run = True
    _thread.start_new_thread(do_stuff)
    

def second_button():
    global run
    print("Second Pressed")
    run = False

b1 = Button(23)
b1.when_pressed = first_button
b2 = Button(24)
b2.when_pressed = second_button

pause()

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