3Dプリンターでロボット作ってみる 多脚ロボット編 34 XBeeで遠隔操作できました!
前回 モーション作りました
このロボットの3Dデータは下のリンクのものを使用しています
前進、後退、右旋回、左旋回のモーションをつくることができたので、ロボットをコントローラーで動かしてみます。
まず基本はコレです。
something-make.hatenablog.com各種設定を完了したXBeeをArduinoのTXとRXに繋ぐと、シリアル通信をそのまま転送してくれます。
- コントローラーからシリアル通信で一文字送る
- ロボットでシリアル通信を受信する
- switch-case文でモーションを選択して実行
- モーション実行中に送られた文字は全て読みこんでなかったことにする
- 最新のシリアル通信データを受信する
という以外に簡単なプログラムでできました。
4は動作中に送られたシリアル通信を無視することで、モーション終了時点で最新のシリアル通信データを読み込み、コントローラに対する反応を良くしています。
この機能が無いと、シリアル通信で送られた信号に対応するモーションを片っ端から実行してしまうので、コントローラからの操作にすぐ反応せず、操作が困難になります。
この機能は以前のArduino開発環境ではSerial.flush()関数でしたが、仕様変更によりSerial.flush()関数の機能が変更になったので、Serial.read()関数が-1を返すまでSerial.read()を繰り返すことで代用しています。
while( Serial.read() != -1){}
実際にコードを書く場合はこのようになります。Serial.read()が-1(データ無し)にならない限り、Serial.read()を実行し続けます。
これでコントローラでロボットを自在に動かすことができるようになりました。