1个不稳定版本
0.1.0 | 2019年2月3日 |
---|
#1479 在 嵌入式开发
13KB
241 行
嵌入式工具包 / rotary-encoder
文档
在 docs.rs
许可
许可协议为以下之一
- Apache License,版本2.0,(LICENSE-APACHE)
- MIT许可协议 (LICENSE-MIT)
由您选择。
贡献
除非您明确声明,否则根据Apache-2.0许可协议定义的您提交给作品中的任何贡献,都应按上述方式双重许可,不附加任何额外条款或条件。
lib.rs
:
处理旋转编码器输入的辅助工具,主要用于嵌入式平台。
use embtk_rotary_encoder::RotaryEncoder;
// The `u16` type will be accepted as a raw position output from your QEI peripheral
let mut enc: RotaryEncoder<u16, _, _> =
// `4i8` below is the number of raw divisions per full physical division.
// `10u32` is the timeout in any kind of ticks you like.
// You'll supply a timestamp every time you receive an even from a peripheral.
RotaryEncoder::new(4i8, 10u32);
assert_eq!(enc.get_delta(65534u16, 1), 0); // we haven't moved full 4 divisions yet
assert_eq!(enc.get_delta(65532u16, 2), -1); // full 4 divisions down => 1 logical division down
assert_eq!(enc.get_delta(65530u16, 3), 0);
assert_eq!(enc.get_delta(65528u16, 20), 0); // too late, read about timeouts below
关于超时的说明
有时您可能会丢失来自外围设备的事件,甚至外围设备可能存在故障。在这种情况下,您可能会略微偏离网格,即您在感受到编码器的触觉反馈时不会看到下一个分区的过渡,而是在位置之间。
为了解决这个问题,有一个超时,当超时结束后,将编码器的当前位置作为后续移动的参考。
依赖项
~155KB