1 个不稳定版本
0.1.0 | 2023年12月2日 |
---|
#1014 在 嵌入式开发
17KB
333 行
Async Button
为no_std
环境提供的异步按钮处理库。基于embedded-hal 1.01
特性和embassy-time
构建。
- 在不阻塞其他任务执行或进行不必要的轮询的情况下检测按钮按下。
- 去抖动
- 检测单次和多次短按
- 检测长按
- 检测短按和长按的序列或多次长按。如果您认为这很有用,请提交问题或提交PR!
示例
let pin = /* Input pin */;
let mut button = Button::new(pin, ButtonConfig::default());
// In a separate task:
loop {
match button.update().await {
ButtonEvent::ShortPress { count } => {/* Do something with short presses */},
ButtonEvent::LongPress => {/* Do something with long press */},
}
}
功能
defmt
:在公共类型上派生defmt::Format
(除了Button
)。std
:使用tokio
代替embassy-time
。主要用于测试。
许可证
许可协议为以下之一
- Apache License,版本2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
依赖
~1.3–2.9MB
~51K SLoC