2 个版本
0.1.1 | 2024年6月5日 |
---|---|
0.1.0 | 2024年5月20日 |
#147 in 嵌入式开发
在 quadrature-encoder 中使用
77KB
1K SLoC
quadrature-decoder
支持全步、半步和四倍步进的正交解码器的纯逻辑级别实现。
增量解码器
use quadrature_decoder::{FullStep, IncrementalDecoder};
let mut decoder: IncrementalDecoder<...> = Default::default();
// Update the decoder with pulse trains `a` and `b` and handle the result:
match decoder.update(a, b) {
Ok(Some(change)) => println!("Change detected: {change:?}."),
Ok(None) => println!("No change detected."),
Err(error) => println!("Error detected: {error:?}."),
}
// Or, if you only care about correctly detected changes:
if let Some(change) = decoder.update(a, b).unwrap_or_default() {
println!("Change detected: {change:?}.")
}
println!("Decoder is at counter: {:?}.", decoder.counter());
请参阅示例目录以获取更全面的示例。
索引增量解码器
索引解码器在检测到 z
脉冲序列上的上升沿时重置其计数器。
use quadrature_decoder::{IndexedIncrementalDecoder};
let mut decoder: IndexedIncrementalDecoder<...> = Default::default();
// Update the decoder with pulse trains `a`, `b` and `z` and handle the result:
match decoder.update(a, b, z) {
Ok(Some(change)) => println!("Change detected: {change:?}."),
Ok(None) => println!("No change detected."),
Err(error) => println!("Error detected: {error:?}."),
}
// Or, if you only care about correctly detected changes:
if let Some(change) = decoder.update(a, b, z).unwrap_or_default() {
println!("Change detected: {change:?}.")
}
println!("Decoder is at counter: {:?}.", decoder.counter());
请参阅示例目录以获取更全面的示例。
解码策略
全步解码
全步解码器能够检测到每个正交周期中的最多1次变化。
use quadrature_decoder::{FullStep, IncrementalDecoder};
let mut decoder: IncrementalDecoder<FullStep> = Default::default();
半步解码
全步解码器能够检测到每个正交周期中的最多2次变化。
use quadrature_decoder::{HalfStep, IncrementalDecoder};
let mut decoder: IncrementalDecoder<HalfStep> = Default::default();
四倍步解码
全步解码器能够检测到每个正交周期中的最多4次变化。
use quadrature_decoder::{QuadStep, IncrementalDecoder};
let mut decoder: IncrementalDecoder<QuadStep> = Default::default();
文档
请参阅docs.rs上的文档。
贡献
请阅读CONTRIBUTING.md以了解我们的行为准则,
以及向我们提交拉取请求的流程。
版本控制
我们使用SemVer进行版本控制。有关可用的版本,请参阅此仓库的标签。
许可证
本项目受MPL-2.0 许可证保护 – 请参阅LICENSE.md文件以获取详细信息。
依赖项
~155KB