Top / Next


基本(1) - AIモータを動かす

1.まずは、AIモータを任意の角度に回転させるプログラムを作成します。現在使用しているモータのIDを予め調べておいて下さい。

@以下の3つのファイルをダウンロードし、同じフォルダ内に納めておきます。
AMS-DOSコマンドプロンプトを起動し、以下のとおりにキー入力を行ってコンパイルします。(*Borland C コンパイラの環境を事前に整えておく必要があります。)
 コンパイラが正常に動作・終了すると、sample10.exe という実行ファイルを生成します。では、sample10.exe を実行させてみましょう。
<コンパイル及び実行画面 その1>

 sample10は、モータを回転させるため、モータに対して「制御コマンド(Position Send)」を送信しています。Sendに続く数値80はモータのトルクとID番号を表し、次のc8はモータの移動位置、48は送信エラーをチェックするために付加したデータになります。Recは、制御コマンド送信時にモータより返えされた「応答データ」であり、モータ電流と現在位置を表しています。(*モータのIDやシリアルポートの設定が正しくないと動きません。
Bモータに制御コマンドを送信するためのプログラムを見てみましょう。Notepad(メモ帳)を以下のように起動します。

<sample10.cppの一部>
 int main(void) から始まる数行がこのプログラムの要になります。まず、getch() 命令でキー入力待ち状態になります。キー入力があると、次の pos_send(0,4,200) が実行されます。このpos_send( )は、モータを任意の角度に回転させるために作られた関数であり、()内には、ID,モード(トルク設定),移動データという順に,(カンマ)で区切ってデータを書き込みます。

2.上記のプログラムを改良し、モータ位置をキー入力できるようにします。

@notepadでsample10.cppを開き、int main(void)以下の部分を書き換えます。 (//より右側は各行を説明するため付けたコメントで、無くとも動作に支障はない。)
<sample10.cppの改良>
 printf( ) 命令は、指定の文字や数値を画面に表示する機能を持っています。次のscanf( ) は、キーボードからデータ入力を行うための命令です。入力されたデータは、変数dに保存されます。このdをpos_send( )の3番目に記載することで、dに保存された値が位置データとして扱われます。
 <コンパイル及び実行画面 その2>
 コンパイルは先ほどと同じように行います。上記の例では、編集したプログラムを sample10b.cpp という名で保存し、コンパイル時にその名を指定しています。RS.CPPも同時に指定することを忘れないで下さい。
A実行の度に毎回 sample10b と名を入力するのは面倒なので、次は while文を使って[データ入力] ->[ コマンド送信]を繰り返し行うことを考えます。処理としては以下のような流れになります。
<キー入力と制御コマンドの送信を繰り返し行う処理の流れ>

<sample10.cppの改良 その2>
 while文は、ある範囲の命令語を繰り返し実行するために用いられます。その範囲は、最初の { とその後にぺアで記述されている }(pos_send後) により示さています。whileが{ } 内の繰り返しを行う条件は、while後の( )に記述し、今回は”入力された値が0でなければ”という条件(d != 0)が用いられています。
<実行画面 その3>

Top / Next