Arduinoでロボゼロのサーボを動かしてみよう!(10)
このシリーズも今回で10回目となりました
今回は「ロングパケットを使って2つのサーボを同時に動かしてみたい」と思います
サーボの設定
今回のサンプルスケッチ(下記)では、2つのサーボを使います。サーボのIDはデフォルトではどれも「1」なので、2つのサーボのIDが重ならない様にあらかじめ変更しておく必要があります。
サーボのIDの変更方法は、前回「Arduinoでロボゼロのサーボを動かしてみよう!(9) 」でやってみましたので、それを参考にやってみて下さい。
Arduinoとの配線
今回のサンプルスケッチ(下記)ではデジタル1番ポートを使うので、普通に2つサーボが繋がる様にブレッドボードを使って繋げるか(左)、先日作ったArduinoのシールドを使ってつなげる(右)で配線します
ロングパケット
基本形はショートパケットと同じで、
Header, ID, Flag, Address, Length, Count, Data, CheckSumで、
- IDはゼロ
- Flagもゼロ
- LengthはID+データのバイト数
- Countは、サーボ数
- Data部分はID+データ、ID+データ、ID+データ、、と表記する
という形になります。下記のサンプルスケッチには、対応する上記の色を付けてみました
サンプルスケッチ
このサンプルスケッチでは、通信速度38400bpsでID=1と3に設定した2つのサーボを用いています。通信速度が異なる場合や、ID番号が異なる場合は変更が必要です。
//-----------------------------------
// ロングパケットで複数個のサーボを動かす
// サーボが動けば、変更成功!
//
// シグナル=デジタルポート1番
// ID=1,3
// 2011/4/10
// Copyright 2011 Micono Utilities
//-----------------------------------
// Torque ON
byte trqOn[] = {0xFA, 0xAF, 0x00, 0x00, 0x24, 0x02, 0x02, 0x01, 0x01, 0x03, 0x01, 0x26};//12
// Rotate Random
byte rrs[] = {0xFA, 0xAF, 0x00, 0x00, 0x1E, 0x03, 0x02, 0x01, 0x5A, 0x00, 0x03, 0xA6, 0xFF, 0x1E};//14
void setup() {
Serial.begin(38400); // 通信速度を設定
delay(500);
Serial.write(trqOn,12);
}
void loop() {
//ID1のサーボ
int deg=random(-1400,1400);//-140度から140度のランダム
rrs[8]=lowByte(deg);//Little Endian
rrs[9]=highByte(deg);//Little Endian
//ID3のサーボ
deg=random(-1400,1400);//-140度から140度のランダム
rrs[11]=lowByte(deg);//Little Endian
rrs[12]=highByte(deg);//Little Endian
calcCheckSum(rrs,14);
Serial.write(rrs,14);
delay(2000);//待つ
}
void calcCheckSum(byte pkt[], byte n) { // チェックサムの設定
int sum = 0;
for(int i=2; i<n-1; i++){
sum = sum ^ pkt[i];
}
pkt[n-1]=sum;
}
//-----------------------------------
さて、今回は以上です。また次回をお楽しみに
----------------
- 「週刊 ロボゼロ」 第3号(3)Arduinoでサーボのテスト(PWM)
- Arduinoでロボゼロのサーボを動かしてみよう!(2)
- Arduinoでロボゼロのサーボを動かしてみよう!(3)
- Arduinoでロボゼロのサーボを動かしてみよう!(4)
- Arduinoでロボゼロのサーボを動かしてみよう!(5)
- Arduinoでロボゼロのサーボを動かしてみよう!(6)
- Arduinoでロボゼロのサーボを動かしてみよう!(7)
- Arduinoでロボゼロのサーボを動かしてみよう!(8)
- Arduinoでロボゼロのサーボを動かしてみよう!(9)
- Arduinoでロボゼロのサーボを動かしてみよう!(10)
- Arduinoでロボゼロのサーボを動かしてみよう!(11)
- RS30xPacketUtil 1.0.1公開
----------------
にほんブログ村
| 固定リンク
「Arduino / Processing」カテゴリの記事
- Intel Galileo 開発ボード(1)入手(2014.02.24)
- FirmaSBBLE(浜サブレー) 公開(2013.12.30)
- SoftModemインターフェースボード で遊んでみる(5)(2011.10.13)
- SoftModemインターフェースボード で遊んでみる(4)(2011.10.13)
- SoftModemインターフェースボード で遊んでみる(6)(2011.10.21)
「週刊 ロボゼロ」カテゴリの記事
- Xcontroller 0.7.0 公開(2014.02.12)
- JO-ZERO2&ROBOXEROに対応した無線式送受信機JXB-1(2014.02.05)
- RCBController 1.0.0 公開(2013.09.28)
- 「SBDBT BLE for RCB」ファーム更新 (2013/9/23)(2013.09.24)
- 「SBDBT BLE for RCB with techBASIC」更新 (2013/9/23)(2013.09.27)
この記事へのコメントは終了しました。
コメント