#contact #switch #button #debouncing

无标准库 timed-debouncer

基于时间的信号去抖动器

1 个不稳定版本

0.1.0 2023年2月19日

#845硬件支持

MIT 许可证

8KB
123

timed-debouncer

no_std Rust crate,用于去抖动来自电气触点(如按钮、旋转开关等)的信号。处理使用基于时间的通用方法,因此可以与任何简单的数值类型(例如 boolu8f32)一起使用。

使用

使用原始输入值、时间戳和去抖动器计数调用 update() 函数。它将返回一个在配置的计数下稳定的处理后的值。滴答值可以是任何单位,在实际应用中,使用毫秒是一个常见的建议。所需的去抖动时间取决于触点的机械结构。使用10-20ms范围内的值对于大多数开关来说是一个很好的选择,以确保安全运行。

去抖动器将使用类型默认值作为初始值,对于整数类型通常是 0,对于 bool 类型通常是 false。您可以使用 set_value() 方法设置不同的初始值。

示例

/// Create an instance of the debouncer.
let mut debouncer = timed_debouncer::Debouncer::new();

/// Number of ticks used to freeze the value when processing.
const DEBOUNCE_TICKS: u32 = 20;

// In real world, this is done somewhere in the main loop.
for tick in 0..50 {
    // Provide real values read from pins here.
    let input_value = if tick == 0 { 1 } else { 0 };

    let debounced_value = debouncer.update(input_value, tick, DEBOUNCE_TICKS);
    println!("{}: {:?} {:?}", tick, input_value, debounced_value);
}

测试

运行 cargo test 进行单元测试。

许可证

在MIT许可证下发布。对项目的任何贡献都必须在相同的许可证条件下提供。

作者:Oliver Rockstedt [email protected]

无运行时依赖