Embedded controls is a no_std
embedded Rust library for working with controls like buttons, encoders and etc.
Add this to your Cargo.toml
:
toml
[dependencies]
embedded-controls = "0.1.4"
Usage in code:
```rust use embeddedcontrols::{ debouncedinputconfig, encoderconfig, Control, DebouncedInput, DebouncedInputEvent, Encoder, EncoderEvent, }; use timestamp_source::Timer;
debouncedinputconfig!(
MyDebouncedInputConfig,
debounce_timer: Timer
encoderconfig!(
MyEncoderConfig,
debouncetimer: Timer
type MyDebouncedInput
fn main() { let pindebouncedinput; // Some pin for debounced input let pinencodera; // Some pin for channel A of encoder let pinencoderb; // Some pin for channel B of encoder
let mut my_debounced_input = MyDebouncedInput::new(
pin_debounced_input.into_active_low_switch()
);
let mut my_encoder = MyEncoder::new(
pin_encoder_a.into_active_low_switch(),
pin_encoder_b.into_active_low_switch(),
);
loop {
match my_debounced_input.update().unwrap() {
DebouncedInputEvent::Low => do_something_when_low(),
DebouncedInputEvent::High => do_something_when_high(),
DebouncedInputEvent::Rise => do_something_upon_rise(),
DebouncedInputEvent::Fall => do_something_upon_fall(),
}
match encoder.update().unwrap() {
EncoderEvent::NoTurn => do_something_when_no_turn(),
EncoderEvent::ClockwiseTurn => do_something_upon_clockwise_turn(),
EncoderEvent::CounterClockwiseTurn => do_something_upon_counter_clockwise_turn(),
}
}
} ```
https://docs.rs/crate/embedded-controls
or build a local copy
sh
cargo docs
and open target/doc/embedded_controls/index.html
in your browser.
Licensed under either of
at your option.