Skip to content

Button 模块

模块介绍

一个用于处理物理按钮输入的 MicroPython 类,提供防抖动的按键状态检测和点击事件识别功能。该模块封装了硬件消抖逻辑,支持检测按钮是否被按下以及是否发生了一次完整的"按下并释放"点击事件,适用于 GPIO 按钮输入的稳定读取,可广泛用于用户交互、控制面板等场景。

硬件引脚说明

引脚名称全称/含义接线颜色功能描述
SSignal/信号黄色数据传输引脚,用于读取按钮状态
VVoltage/电源红色电源电压输入,为设备提供工作电压
GGround/地线黑色接地引脚,完成电路回路

初始化参数

参数类型默认值说明
pinPinmachine.Pin实例
debounce_delayint10按键消抖延迟时间(毫秒),用于过滤机械抖动

导入和实例创建

python
from machine import Pin    # 导入Pin模块
from button import Button  # 导入Button驱动模块

# 初始化按钮,连接到 GPIO4
btn = Button(Pin(4))       # 创建Button实例,传入Pin对象

核心属性方法

属性或方法参数返回类型说明
is_pressed()bool检测按钮当前是否被按下(已消抖),返回 True 表示按下,False 表示未按下
is_clicked()min_interval=50 (int)bool检测是否发生一次完整点击(按下后释放),可设置最小点击间隔防止误触发

使用示例

检测点击事件

python
from machine import Pin
from button import Button
from time import sleep_ms

btn = Button(Pin(4))

print("等待按钮点击(仅检测点击事件)...")
while True:
    if btn.is_clicked():
        print("✅ 检测到一次点击!")  # 只在松开瞬间触发
    sleep_ms(50)

检测持续按下

python
from machine import Pin
from button import Button
from time import sleep_ms

btn = Button(Pin(4))

print("等待按钮按下(持续检测)...")
while True:
    if btn.is_pressed():
        print("🔵 按钮正在被按下")  # 按住时持续触发
    sleep_ms(50)

重要警告

两个功能不要一起使用!请根据应用场景选择合适的检测方法。

注意事项

性能提示

  • 在 while True 循环中请配合延时函数使用,防止程序过载

功能使用

  • is_pressed() 和 is_clicked() 两个功能不要一起使用,根据应用场景选择其一
  • is_clicked() 方法内部依赖 is_pressed() 的状态更新,需确保定时调用

技术细节

  • 驱动会自动配置引脚状态(根据触发方式选择上拉或下拉电阻)
  • is_clicked() 检测的是"按下后释放"的完整动作,适合用于触发事件
  • debounce_delay 一般设置为 10~50 毫秒,过短可能导致抖动未完全消除
  • 长按不会持续触发 is_clicked(),仅在释放时判断是否为有效点击