12 个版本
使用旧的 Rust 2015
0.3.0 | 2019 年 5 月 9 日 |
---|---|
0.2.2 | 2018 年 11 月 28 日 |
0.1.7 | 2018 年 9 月 18 日 |
0.1.6 | 2018 年 7 月 17 日 |
#588 in 嵌入式开发
在 2 crate 中使用
95KB
2K SLoC
文档
此 crate 提供了与 Herkulex DRS (0101 和 0201) 伺服电机通信的基本功能。它主要基于东芝机器人发布的文档,可在 此处
获取。
示例
发送数据
使用此库向伺服电机发送数据的最佳方法是使用 Servo 结构。例如,以下是设置伺服电机(id:0x40)为连续旋转的方法。
extern crate drs_0x01;
use drs_0x01::Servo;
fn main() {
let servo = Servo::new(0x40);
let message = servo.set_speed(512, Rotation::Clockwise);
// ... send the message
}
还有一些更高级的类型,适用于熟悉 herkulex 数据表的用户。
这是如何执行相同的任务(将伺服电机设置为连续旋转),但使用这些类型。此外,我们将颜色从蓝色改为红色,以显示这些类型如何提供更多控制。
extern crate drs_0x01;
use drs_0x01::*;
use drs_0x01::builder::MessageBuilder;
fn main() {
let message = MessageBuilder::new().id(0x40).s_jog(/* Playtime : datasheet value : */ 60,
JogMode::continuous{speed : 512},
JogColor::red,
0x40)
.build();
// ... send the message.
}
要重启所有伺服电机,可以使用此消息
extern crate drs_0x01;
use drs_0x01::builder::MessageBuilder;
fn main () {
let message = MessageBuilder::new().id(0xFE).reboot().build(); // 0xFE is the broadcast ID
}
以下是启用标记为 35 的伺服电机的扭矩的方法
extern crate drs_0x01;
use drs_0x01::builder::MessageBuilder;
use drs_0x01::WritableRamAddr::TorqueControl;
fn main() {
let message = MessageBuilder::new_with_id(35).write_ram(TorqueControl(1)).build();
}
接收数据
您可以使用 ACKPacket 和 ACKReader 将传入的字节轻松解析并转换为 ACKPacket。
请参阅 examples
文件夹中的代码片段。
依赖关系
~105KB