#button #embassy #async #no-std

no-std async-button

无std环境的异步按钮处理库

1 个不稳定版本

0.1.0 2023年12月2日

#1014嵌入式开发

MIT/Apache

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。主要用于测试。

许可证

许可协议为以下之一

任选其一。

依赖

~1.3–2.9MB
~51K SLoC