DSC02428.JPG

ロボゼロ付属のサーボをArduinoで制御した.


TTLコマンド方式のサーボを動かしたく,
なかでもロボゼロの付属のRS306MDがお手頃ということでやってみました.
バックナンバー70号あたりはまだまだ在庫があるようです.
ほとんど参考先と同じプログラムですが,
2年前の情報だったので一部修正しています.
3ステートバッファの論理回路により半二重通信/全二重通信の変換を行っております.
参考先と同じ74HC125を使用しました.
Arduino

// TTLコマンド方式のサーボとの通信テスト
#include <SoftwareSerial.h>
SoftwareSerial ServoSerial(2, 3);// サーボとの通信に、2,3ピンを使用
// 送信テスト用
byte trqOn[] = {
0xFA, 0xAF, 0x01, 0x00, 0x24, 0x01, 0x01, 0x01, 0x24}; //トルクON
byte cw144[] = {
0xFA, 0xAF, 0x01, 0x00, 0x1E, 0x02, 0x01, 0xA0, 0x05, 0xB9}; //時計回り144度
byte ccw144[] = {
0xFA, 0xAF, 0x01, 0x00, 0x1E, 0x02, 0x01, 0x60, 0xFA, 0x86}; //反時計回り144度
// 受信テスト用
byte modelnum[]={
0xFA, 0xAF, 0x01, 0x0F, 0x00, 0x02, 0x00, 0x0C};
byte currVOLT[]={
0xFA, 0xAF, 0x01, 0x0F, 0x34, 0x02, 0x00, 0x38};
byte mem30to41[]={
0xFA, 0xAF, 0x01, 0x0B, 0x00, 0x00, 0x01, 0x0B};
void setup() {
pinMode(13,OUTPUT);//LED
ServoSerial.begin(115200); //Arduino<–>Servoを115200bps(工場出荷時)に設定
Serial.begin(115200); //PC<–>Arduinoを115,200bpsに設定
delay(1000);
ServoSerial.write(trqOn,9); //トルクON
}
void loop() {
int rx,tx;
//リターン(受信)
rx=ServoSerial.available();//データ数
if(rx>0) {
digitalWrite(13,LOW);//LED消す
for(int i=0;i<rx;i++) {
Serial.print(ServoSerial.read(),HEX);
Serial.print(",");
}
Serial.print("\n");//改行
ServoSerial.flush();//受信データクリア
}
//リクエスト(送信)
tx=Serial.available();//データ数
if(tx>0) {
delay(200); //2秒待つ
ServoSerial.write(cw144,10); //144度まで回転
switch(Serial.read()) {
case 65://大文字A
digitalWrite(13,HIGH);//LED点灯
ServoSerial.write(modelnum,8);
break;
case 66://大文字B
digitalWrite(13,HIGH);//LED点灯
ServoSerial.write(currVOLT,8);//現在の電圧
break;
case 67://大文字C
digitalWrite(13,HIGH);//LED点灯
ServoSerial.write(mem30to41,8);//メモリーの30から41
break;
default:
for(int i=0;i<4;i++) {
digitalWrite(13,HIGH);
delay(20);
digitalWrite(13,LOW);
delay(20);
}
break;
}
tx = 0;
Serial.flush();//受信データクリア
}
else{
delay(200); //2秒待つ
ServoSerial.write(ccw144,10); //-144度まで回転
}
}

参考
・ROBOMIC XERO Arduinoでロボゼロのサーボを動かしてみよう!
 http://micutil.com/rx/rs306witharduino.html
・RS306MDのTTLコマンドのテストボード | RoboZak奮戦記
 http://robozak.takuo.main.jp/?eid=1053861