Arduinoに付属するサンプルプログラムを利用して簡単なサーボの制御を行います。■プログラム解説ここからArduino用のプログラム環境であるスケッチを使用します。ver.2』に付属するサンプルプログラムの「KrsServo1」を改造して二つのサーボを制御するプログラムを行います。サンプルのままのID0を動かすプログラムをご紹介します。サンプルプログラムは、「ファイル」→「スケッチ例」→「IcsClass_V200」から開くことができます。最初に記述されている下記の内容は、ICS機器と通信するための初期設定です。HardwareSerial、SoftwareSerialで初期設定の方法が異なります。この箇所以降は、各関数を同じように使用できますので、異なるポイントだけご注意ください。krs(&Serial,enpin,baudrate,timeout);下記は、サーボと通信を開始するためのプログラムです。この関数が記述されている場所からArduinoがサーボと通信を開始します。プログラムの最初にsetup()が実行されますのでここに記述してください。//サーボモータの通信初期設定}このloop()の中でサーボなどICS機器に命令を送ります。左delay(500);}krs.setPos(0,7500);はサーボに角度を指定する関数です。()内の0は、サーボのIDです。ここを1、2、3などに変更することで角度を指定するサーボを選択することができます。7500は、サーボの角度です。ICS機器のサーボは中心(ニュートラル位置)が7500になっています。サーボの軸を正面から見た場合、左端は3500、右端は11500で3500~7500~11500の範囲内で可動範囲270°内の角度指定を行います。可動範囲は3500~11500となりますので、指定する範囲は、11500-3500=8000となります。サーボは、270°の範囲で動作しますのでパラメータ1で0.03375°となります。※サーボに搭載している角度センサーの性能やギヤのバックラッシュなどで0.03375°単位での細かい指定はできません。到達地点に多少のズレが生じる場合があります。loop()内の3行目で指定している9500は、9500-7500=2000ですので、右に67.5°移動するように指示しています。対しまして7行目の5500は、左側に67.5°移動するように指示しています。delay();は、何もせずに待つための関数です。サーボが動き出してからすぐに次の命令を送ると到達前に次の角度へ移動する可能性がありますので、多少の待ちを用意する必要があります。delayの()内は1で1msを指定できます。1msは、1000分の1秒です。500を指定すると500msの待ちを用意することができます。■プログラムの書き込みと実行サンプルプログラムの「KrsServo1」を書き込んで実行してみます。1)ICS変換基板上のスイッチを「書込」に切り替えます。※SoftwareSerialで使用する場合は、「実行」のまま切り替える必要はありません。2)ArduinoにUSBケーブルを接続します。3)スケッチの書き込みボタンを押します。4)書き込みが正常に完了したらArduinoのUSBケーブルを抜き、ICS変換基板上のスイッチを「実行」に切り替えます。(プログラムの書き込みが完了すると、Ardionoは自動でプログラムを実行します。スイッチを「実行」に切り替えてからサーボにコマンドが流れますが、その際にプログラムの途中からサーボに命令が行くとサーボが思わぬ方向に動いてしまう場合があります。安全のため、一度USBケーブルを抜きサーボの電源をいれてからプログラムを実行させましょう)5)ICS変換基板に接続した電源をONにするとサーボが動きます。5500(左に67.5°)...(以下ループ)電源投入直後に0°のニュートラル位置に移動し、500ms後に右へ67.5°の位置に移動します。次に再びニュートラル位置に移動し、さらに左へ67.5°の位置に移動します。loop()内のプログラムは、繰り返し再生されますので、サーボは電源がOFFにならない限り上記の動作を繰り返します。■プログラムを改造するそれでは、このプログラムにID1を追加してみます。やり方は非常に簡単で、krs.setPos(1,xxxx);を追加するだけです。下記の通り記述してプログラムを実行してください。ID0とID1のサーボがまったく同じ動きをすれば成功です。左delay(500);}数字を変えたりdelay()の場所を変えることでサーボの動きを変えることができますのでぜひチャレンジしてください。サーボを複数台増やしても同じように関数を増やせば個別に角度を指定することができます。他にも無線コントローラーKRC-5FHを使用した例もありますので、Arduinoで制御しているロボットを簡単に無線化することができます。このようにArduinoでICS機器を使用することができますので、ロボットの作成にぜひご利用ください。