Crates.io | embedded-controls |
lib.rs | embedded-controls |
version | 0.1.5 |
source | src |
created_at | 2022-11-01 21:22:23.619313 |
updated_at | 2022-12-03 00:02:19.421485 |
description | Based on switch-hal library that allows to handle primitive controls(buttons, encoders and etc.) |
homepage | |
repository | https://github.com/kusstas/embedded-controls |
max_upload_size | |
id | 703075 |
size | 41,558 |
Embedded controls is a no_std
embedded Rust library for working with controls like buttons, encoders and etc.
Add this to your Cargo.toml
:
[dependencies]
embedded-controls = "0.1.5"
Usage in code:
use embedded_controls::{
debounced_input_config,
encoder_config,
Control,
DebouncedInput,
DebouncedInputEvent,
Encoder,
EncoderEvent,
};
use timestamp_source::Timer;
debounced_input_config!(
MyDebouncedInputConfig,
debounce_timer: Timer<SomeTimestamp> = Timer::new(30.millis())
);
encoder_config!(
MyEncoderConfig,
debounce_timer: Timer<SomeTimestamp> = Timer::new(2.millis())
counts_div: i8 = 4
);
type MyDebouncedInput<Switch> = DebouncedInput<Switch, MyDebouncedInputConfig>;
type MyEncoder<SwitchA, SwitchB> = Encoder<SwitchA, SwitchB, MyEncoderConfig>;
fn main() {
let pin_debounced_input; // Some pin for debounced input
let pin_encoder_a; // Some pin for channel A of encoder
let pin_encoder_b; // 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
cargo docs
and open target/doc/embedded_controls/index.html
in your browser.
Licensed under either of
at your option.