4个版本
0.1.5 | 2022年12月3日 |
---|---|
0.1.4 | 2022年11月29日 |
0.1.3 | 2022年11月25日 |
0.1.2 | 2022年11月1日 |
0.1.1 |
|
#3 在 #去抖动
每月 22 次下载
21KB
249 行
嵌入式控件
嵌入式控件是一个用于处理按钮、编码器等控件的 no_std
Rust嵌入式库。
用法
将此内容添加到您的 Cargo.toml
[dependencies]
embedded-controls = "0.1.5"
代码中的用法
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
或构建本地副本
cargo docs
然后在浏览器中打开 target/doc/embedded_controls/index.html
许可证
许可以下任一
- Apache许可证第2版 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
依赖项
~450KB