#embedded-hal #debounce #no-std

no-std unflappable

一个包含电池的嵌入式-hal InputPin 消抖器

2 个不稳定版本

0.2.0 2023年4月18日
0.1.0 2020年8月12日

#433 in 嵌入式开发

每月 40 次下载

MIT 许可证

39KB
391

unflappable

一个包含电池的 嵌入式-hal InputPin 消抖器。

快速入门

将以下内容添加到您的 Cargo.toml

[dependencies]
unflappable = "0.2"

在静态存储中创建一个未初始化的 Debouncer

use unflappable::{debouncer_uninit, Debouncer, default::ActiveLow};
static DEBOUNCER: Debouncer<PinType, ActiveLow> = debouncer_uninit!();

使用您的输入引脚初始化 Debouncer,返回 Debounced 引脚。就像使用其他任何 InputPin 一样使用此引脚,例如将其所有权传递给另一个抽象。

let debounced_pin = unsafe { DEBOUNCER.init(input_pin) }?;

定期轮询 Debouncer,例如在中断服务例程中。

unsafe {
    DEBOUNCER.poll()?;
}

文档

API 文档

API 文档托管在 docs.rs 上

API 文档

最低支持的 Rust 版本

此软件包使用 const fn 上的特征界限,需要 Rust 1.61。

与其他消抖软件包的比较

至少有三个针对嵌入式 Rust 开发的消抖软件包。这个与其他软件包相比如何?

  • 软件包:unflappable
    • 包装 InputPin
    • 可以移动包装的引脚:
    • 算法:基于 Kuhn 的积分
    • 状态开销:u8
  • 软件包:debounced-pin
    • 包装 InputPin
    • 可以移动包装的引脚:否
    • 算法:基于 Greensted 的微分
    • 状态开销:u8 + enum
  • 软件包:debouncr
    • 包装 InputPin:否
    • 可以移动包装的引脚:N/A
    • 算法:基于 Ganssle 的微分
    • 状态开销:u8
  • 软件包:debouncing
    • 包装 InputPin:否
    • 可以移动包装的引脚:N/A
    • 算法:基于 Hackaday 的微分
    • 状态开销:u8 + 动态分配的 Vec

贡献

我很高兴看到任何形式的贡献,包括错误报告、可用性建议、补丁,或者愤怒但善意地批评。鼓励您向官方的 问题跟踪器 报告问题,并将任何问题或补丁发送到 邮件列表。向 GitHub 镜像提交的拉取请求也是可接受的。

依赖项

~71KB