Crates.io | drs-0x01 |
lib.rs | drs-0x01 |
version | 0.3.0 |
source | src |
created_at | 2018-07-07 21:11:06.485607 |
updated_at | 2019-05-09 12:52:10.691584 |
description | Easily communicate with Dongbu Robot servomotors Herkulex DRS 0101 and DRS 0201 |
homepage | |
repository | https://github.com/gbip/drs_0x01_driver |
max_upload_size | |
id | 73249 |
size | 109,089 |
This crate provides basic functionalities 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.
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
}
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.
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.
}
To reboot all the servomotors you can use this 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
}
Here is how to enable torque for the servomotor labelled 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();
}
You can easily parse incoming bytes and transform them into ACKPacket by using an ACKReader.
See the examples
folder for a code snippet.