timed-debouncer
no_std Rust crate for debouncing signals from electrical contacts like push-buttons, rotary switches and alike. The processing uses a time-based generic approach and can therefore be used with any simple numeric type (e.g. bool, u8 or f32).
Usage
Call the update() function with a raw input value, a timestamp tick and a tick count for the debouncing.
It will return a processed value that is stable for the configured tick count.
The tick value can be of any unit, in practice, using milliseconds is a common recommendation. The required debounce time is dependent on the mechanics of the contacts. Using a value in range of 10-20ms is a good choice for most switches to ensure safe operation.
The debouncer will take the default value of the used type as initial value, which is typically 0 for integer types and false for bool. You can use the set_value() method to set a different initial value.
Example
/// Create an instance of the debouncer.
let mut 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
Tests
Run cargo test for the unit tests.
License
Published under the MIT license. Any contribution to this project must be provided under the same license conditions.
Author: Oliver Rockstedt info@sourcebox.de