Button 模块
模块介绍
一个用于处理物理按钮输入的 MicroPython 类,提供防抖动的按键状态检测和点击事件识别功能。该模块封装了硬件消抖逻辑,支持检测按钮是否被按下以及是否发生了一次完整的"按下并释放"点击事件,适用于 GPIO 按钮输入的稳定读取,可广泛用于用户交互、控制面板等场景。
硬件引脚说明
| 引脚名称 | 全称/含义 | 接线颜色 | 功能描述 |
|---|---|---|---|
| S | Signal/信号 | 黄色 | 数据传输引脚,用于读取按钮状态 |
| V | Voltage/电源 | 红色 | 电源电压输入,为设备提供工作电压 |
| G | Ground/地线 | 黑色 | 接地引脚,完成电路回路 |
初始化参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| pin | Pin | 无 | machine.Pin实例 |
| debounce_delay | int | 10 | 按键消抖延迟时间(毫秒),用于过滤机械抖动 |
导入和实例创建
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(),仅在释放时判断是否为有效点击