You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Python3和GPIO为树莓派3B+实现单次触发Toggle切换开关

树莓派GPIO实现按压Toggle开关方案

Toggle开关的核心逻辑是每次按压触发时,翻转当前LED的工作状态(开变关、关变开),基于你使用的gpiozero库,Button组件默认已经做了硬件消抖处理,不需要额外开发消抖逻辑,修改后的代码如下:

修改后完整代码

from gpiozero import LED, Button, Buzzer
from time import sleep

led = LED(19)
# 如需调整按钮灵敏度防误触,可加bounce_time参数,示例:Button(20, bounce_time=0.05),单位为秒
SW1 = Button(20)
buzzer = Buzzer(26)
# 记录LED当前状态,默认关闭
led_state = False

def SW1Pressed():
    global led_state
    # 翻转状态
    led_state = not led_state
    if led_state:
        led.on()
        # 按压时蜂鸣器短响作为操作反馈,不需要可以删掉
        buzzer.beep(0.1)
    else:
        led.off()
        buzzer.beep(0.1)
    
SW1.when_pressed = SW1Pressed
    
print("Press SW to toggle LED.")

while True:
    # 主循环留空即可,也可以添加其他需要持续运行的业务逻辑
    sleep(0.1)

关键修改说明

  • 新增了led_state全局变量,用来记录LED当前的开关状态,初始默认是关闭状态
  • 重写了SW1Pressed回调函数:每次按钮按下时直接翻转状态变量,同步控制LED的亮灭,移除了原来的SW1Press按压标记,无需在主循环中单独判断按压状态
  • 可选添加了蜂鸣器反馈逻辑,每次按压都会短响0.1秒,方便直观确认按压生效
  • 主循环保留了0.1秒的休眠逻辑,避免程序空转占用过高CPU资源

内容的提问来源于stack exchange,提问作者sya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:54:00