This crate provides basic functionnality to communicate with Herkulex DRS (both 0101 and 0201)
servomotors.
It is heavily based on the documentation published by Dongbu Robot which is available
here
.
The best way to use this library to send data to the servomotor is to use the Servo struct. For example, this how you can set a servomotor (id : 0x40) into continuous rotation.
```rust extern crate drs0x01; use drs0x01::Servo;
fn main() { let servo = Servo::new(0x40); let message = servo.set_speed(512); // ... send the message } ```
There is also some more advanced type for user experienced with the herkulex datasheet.
This is how to do the same task (set a servomotor into continuous rotation), but using those types. Moreover we changed the color from blue to red to show how those types give more control.
```rust extern crate drs0x01; use drs0x01::*; 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. }
```
To reboot all the servomotors you can use this message :
```rust extern crate drs0x01; use drs0x01::builder::MessageBuilder;
fn main () { let message = MessageBuilder::new().id(0xFE).reboot().build(); // 0xFE is the broadcast ID } ```
Here is how to enable torque for the servomotor labelled 35 :
rust
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();
}
## Receiving Data
You can easily parse incoming bytes and transform them into ACKPacket by using an ACKReader.
See the examples
folder for a code snippet.