3个版本
0.1.3 | 2022年1月3日 |
---|---|
0.1.2 | 2017年9月14日 |
0.1.1 | 2017年9月11日 |
#452 在 嵌入式开发
22KB
280 行
stepgen
步进电机速度斜坡生成器。
给定加速度、目标速度和目标步数停止的位置,生成步进电机的加速度或减速度曲线,以步之间的延迟形式表示。
使用David Austin在《实时生成步进电机速度曲线》一文中提出的算法。
示例
use stepgen::Stepgen;
let mut stepper = Stepgen::new(1_000_000);
stepper.set_acceleration(1000 << 8).unwrap(); // 1000 steps per second per second
stepper.set_target_speed(800 << 8).unwrap(); // 800 steps per second (4 turns per second)
stepper.set_target_step(1000).unwrap(); // stop at step 1000
// Take 99 steps
for _ in 0..99 {
println!("{}", stepper.next().unwrap());
}
assert_eq!(99, stepper.current_step());
assert_eq!(113621, stepper.current_speed());
assert_eq!(2242, (stepper.next().unwrap() + 128) >> 8); // delay for 100th step, rounded to the nearest integer
关于数字的说明
在少数API中,stepgen将数字保留为定点数,使用最低的8位表示小数部分,其余位表示整数部分。
许可证
许可协议为以下之一
- Apache许可证2.0版本,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非你明确声明,否则任何有意提交以包含在你所定义的工作中的贡献,根据Apache-2.0许可证,应以上述双许可方式进行,不附加任何额外的条款或条件。