ICS変換基板の使用方法(3) 無線コントロール編(R4改訂版)
【関連記事】
ICS変換基板の使用方法(4) ID読み書き編(R4改訂版)
ICS変換基板の使用方法(5) Arduino Nano EveryでKRSサーボを制御
前回までの記事では、ICS変換基板を使用してサーボの制御を行ってきましたが、今回は無線コントロールのご紹介です。
Arduino向けライブラリには無線コントローラKRC-5FHの受信機であるKRR-5FH用の関数が用意されていますので、接続することでArduinoを簡単にボタン操作による無線コントロールを行うことができます。
今回は、KRC-5FH&KRR-5FHの搭載方法とプログラムを解説します。
■KCR-5FH&KRR-5FHとは
KRC-5FHは、ロボット用無線コントローラです。KXRシリーズやKHRシリーズに受信機KRR-5FHを搭載することによって、ロボットを無線コントロールできるようになります。
市販のゲームパッドに比べてボタンの数が多いため、より多くのモーションをボタンに割り当て、ワンプッシュで再生することが可能です。
また、コントローラ側にアナログ出力(5V)のセンサーを接続できますので、センサーの情報を元にロボットを動かすこともできます。
■用意するもの
無線コントローラ(送信機)、受信機のセットです。ケーブルも付属しますので他に追加で用意するものはありません。
■準備:受信機の接続
●ICS変換基板に直接つなげる場合
一番シンプルな接続方法です。送信機付属のZH接続ケーブルBのZHコネクタ側を受信機のSIO端子に接続し、サーボコネクタ側をICS変換基板の空いている端子に接続してください。
●デイジーチェーン接続の途中に入れる場合
【ZHコネクタのサーボに配線する(KRS-2500/3200/3300)】
受信機は、前回配線したサーボのラインにつなげることができます。配線のイメージは下記のようになります。
1)ICS変換基板に接続されているサーボの配線を一度外します。
2)KRR-5FHとICS変換基板をセット付属のZH接続ケーブルBで接続します。
3)KRR-5FHの空いている端子に、サーボのZH接続ケーブルAを接続し完了です。
【サーボコネクタのサーボに配線する(KRS-9000/6100/6000/5000/4000)】
KRS-4000シリーズ、6000シリーズなどサーボの端子がサーボコネクタタイプの場合は下記のように配線します。
1)ICS変換基板に二又ケーブルを接続します。
2)KRR-5FHにZH接続ケーブルBのZHコネクタ側を接続します。
3)サーボの接続ケーブルと、KRR-5FHの接続ケーブルをそれぞれ二又ケーブルに接続すれば完了です。
■KRR-5FHからのボタンデータについて
送信機KRC-5FHには、各ボタンに数字が割り当てられています。このボタンの数字をKRR-5FHが受信し、Arduinoで読み込むことが可能です。各ボタンの数字は下記のようになっています。
(画像と下記説明の数字は10進数です)
各ボタンは組み合わせることができます。例えば、↑と←を同時に押すと1と8ですので9になります。また、シフト1と↑を組み合わせると、512と1で513になります。
SP1、SP2はスペシャルボタンです。SP1は15、SP2は368が割り当てられています。
詳細はKRC-5FH&KRR-5FHのマニュアルをご覧ください。
■プログラム解説
『ICS Library for Arduino ver.3』に付属するサンプルプログラムの「KrrButton2」を例にKRR-5FH(受信機)からKRC-5FH(送信機)のボタンデータを受け取る方法を解説します。
●最初に記述されている下記の内容は、ICS機器と通信するための初期設定です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <IcsHardSerialClass.h> const byte EN_PIN = 2; //Arduinoに接続したenableピンのピン番号 const long BAUDRATE = 115200; //サーボの通信速度 const int TIMEOUT = 1000; //サーボとのシリアル通信に設定する応答待ち時間 //インスタンス+ENピン(2番ピン)およびUARTの指定 //ボードに接続しているシリアルポートに合わせて&Serialを変更してください。 //(&Serial / &Serial1 / &Serial2...) IcsHardSerialClass krs(&Serial1,EN_PIN,BAUDRATE,TIMEOUT); void setup() { Serial.begin(9600); // PCと通信を開始 krs.begin(); //サーボモータの通信初期設定 } |
下記のloop()内で無線コントローラからのボタンデータを取得してswitch文で分岐しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
void loop() { unsigned short buttonData; buttonData = krs.getKrrButton(); if(buttonData != KRR_BUTTON_FALSE) //ボタンデータが受信できていたら { switch(buttonData) { case KRR_BUTTON_UP : //↑ボタンだった時 { krs.setPos(0,7500); break; } case KRR_BUTTON_DOWN : //↓ボタンだった時 { krs.setFree(0); //フリーにする break; } case KRR_BUTTON_RIGHT : //→ボタンだった時 { krs.setPos(0,krs.degPos100(9000)); break; } case KRR_BUTTON_LEFT : //←ボタンだった時 { krs.setPos(0,krs.degPos100(-9000)); break; } case (KRR_BUTTON_UP | KRR_BUTTON_RIGHT) : //↑→ボタンだった時 { krs.setPos(0,krs.degPos100(4500)); break; } default: { //なにもしない break; } } } else { delay(1000); } delay(10); //KRR5は10ms以下の応答にはついていけないので待つ } |
buttonData = krs.getKrrButton();は、KRR-5FHが取得したボタンデータを関数で読み出し、変数に代入しています。
if(buttonData != KRR_BUTTON_FALSE)の箇所でボタンデータが取得できているか確認しています。もし取得できていない場合は、KRR_BUTTON_FALSE(0xFFFF)が返ってきますので、これとは違う数字であればTrueになります。
switch(buttonData)からボタンデータの値による分岐です。
条件の「KRR_BUTTON_UP」は↑に該当します。ここでは、↑が押された場合の処理が記述されています。ここに数字を直接書いても問題ありません。↑は1ですので、1と書いても同じように処理されます。
ボタンの組み合わせは、KRR_BUTTON_UP | KRR_BUTTON_RIGHTのように表記します。
ボタンの予約後については、ライブラリ付属のマニュアルp.35をご参照ください。
以上で無線コントロールの作業は完了です。他にも送信機に接続したセンサーの情報を取得する関数もありますので、ライブラリ付属のマニュアルを参考にぜひお試しください。
次の記事『ICS変換基板の使用方法(4) ID読み書き編(R4改訂版)』
前の記事『ICS変換基板の使用方法(2) サーボ制御編(R4改訂版)』
KRS-2552R3HV ICSの詳細をみる KRS-3204R2 ICSの詳細をみる KRS-2572R2HV ICSの詳細をみる KRS-2552R2HV ICSの詳細をみる KRS-2542R2HV ICS の詳細をみる KRS-9004HV ICSの詳細をみる KRS-5054HV ICS H.Cの詳細をみる KRS-5053HV ICS H.Cの詳細をみる KRS-5034HV ICSの詳細をみる KRS-5033HV ICSの詳細をみる KRS-5032HV ICSの詳細をみる KRS-6104FHV ICSの詳細をみる KRS-3304R2 ICSの詳細をみる KRS-3302 ICSの詳細をみる ICS変換基板の詳細をみる KSBシールド2の詳細をみる ICS変換基板シールドの詳細をみる KXR用オプションボード搭載セットAの詳細をみる KRS-6003R2HV ICSの詳細をみる KRS-6003RHV ICSの詳細をみる KRS-2572HV ICSの詳細をみる KRS-2552RHV ICSの詳細をみる KRS-2542HV ICSの詳細をみる KRS-4037HV ICSの詳細をみる KRS-4034HV ICSの詳細をみる KRS-4033HV ICSの詳細をみる KRS-4032HV ICSの詳細をみる KRS-4031HV ICSの詳細をみる KRS-3304 ICSの詳細をみる KRS-3301 ICSの詳細をみる KRS-3204 ICSの詳細をみる KXR アドバンスセットA Ver.2の詳細をみる KXR-A5 アーム型 Ver.2の詳細をみる KXR-L4T-R カメ型・ローバー型 Ver.2(アカデミックパック)の詳細をみる KXR用オプションボード搭載セットBの詳細をみる