ICS変換基板の使用方法(4) ID読み書き編(R4改訂版)
【関連記事】
ICS変換基板の使用方法(4-2) M5StackでID読み書き
ICS変換基板の使用方法(5) Arduino Nano EveryでKRSサーボを制御
ICS変換基板の使用方法(6-1) Arduino MEGAから18個のサーボを制御する
ICS変換基板の使用方法(6-2) 直線補間でサーボを滑らかに動かす
ICS変換基板の使用方法(6-3) Arduino MEGAからKXR-L6の歩行制御
ICS Library for Arduino ver.3には、サーボのIDを読み書きする関数があります。この関数を使用することで、別途Dual USBアダプターHSを使用することなく、IDの書き換えが可能です。この記事では、実際にIDを変更するための手順と注意点をご紹介します。
ライブラリはこちらからダウンロードしてください。
『ICS Library for Arduino ver.3』
※弊社では他社マインボード、及びプログラムに関するお問い合わせついて対応致しかねます。以下の内容は、仕様事例として参考にご一読ください。
■接続方法
Arduinoとサーボは、必ず1対1で接続してください。デイジーチェーン接続で多数のサーボとつながったまま書き換えをすると、全てのサーボのIDが書き換わってしまったり、正常に書き換えられず誤動作する場合があります。
ICS変換基板とArduinoの配線方法、必要な製品は準備編を参照してください。
■プログラム解説
KRSサーボのIDを変更するには、スケッチ例「KrsServoSetID」を使用します。
最初に記述されている内容は、サーボを動作させる場合と同じです。シリアル通信の設定とsetup()のkrs.begin()で通信がスタートします。
●初期設定
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(); //サーボモータの通信初期設定 } |
初期設定は他のサンプルプログラムから変更ありません。詳しくはサーボ制御編をご参照ください。
●ID書き換え箇所
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 |
void loop() { const byte SET_ID = 1; //変更するID番号 //IDの設定 krs.setID(SET_ID); delay(100); //少し待つ //IDの取得 int reId = krs.getID(); Serial.print("Set ID: "); if(reId == SET_ID) { //成功した場合 Serial.println("True"); } else { //失敗した場合 Serial.println("False"); } for(;;); //処理終了 } |
krs.setID()でサーボのIDを変更します。引数として変更したいID番号を渡せばそのIDに書き換えることが可能です。
また、サーボからIDを読み出したい場合は、krs.getID()を使用します。戻り値としてID番号を取得することができます。
上記の例では、正しくIDを変更できたかをSerial.println()でシリアルモニタに表示するようにしています。
このように、getID()、setID()関数を利用することで簡単にID番号を読み書きすることができます。これまでは、サーボの設定を変更するためにDual USBアダプターHSが必要でしたが、IDの書き換えだけでしたらこれらの関数のみで実行できるため、初期コストを抑えることができます。ただし、動作確認やその他パラメータの設定変更をしたい場合は、マネージャソフトが大変便利ですので、Dual USBアダプターHSを一つお手元にご用意しておくことをお勧めします。
【ご注意ください】
※Arduinoとサーボは1対1で接続してください。
※IDの書き込み関数を使用する場合は、loop()により繰り返し書き換えないようにご注意ください。長期間書き込みを繰り返しますと、サーボ内のROM書き換え制限を超えてしまう場合があり、サーボが正常に動作しなくなる可能性があります。スケッチ例では「for(;;);」により処理を停止しています。