1 个不稳定版本
0.1.0 | 2023年2月19日 |
---|
#845 在 硬件支持
8KB
123 行
timed-debouncer
no_std
Rust crate,用于去抖动来自电气触点(如按钮、旋转开关等)的信号。处理使用基于时间的通用方法,因此可以与任何简单的数值类型(例如 bool
、u8
或 f32
)一起使用。
使用
使用原始输入值、时间戳和去抖动器计数调用 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]