#no-std #embedded-toolkit

no-std embtk-rotary-encoder

嵌入式工具包用于处理旋转编码器输入的辅助工具

1个不稳定版本

0.1.0 2019年2月3日

#1479嵌入式开发

MIT/Apache

13KB
241

嵌入式工具包 / rotary-encoder

docs crates.io ci

文档

docs.rs

许可

许可协议为以下之一

由您选择。

贡献

除非您明确声明,否则根据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