3: 2011-07-01 (金) 17:37:36 yoshida | 4: 2011-07-01 (金) 19:41:03 yoshida | ||
---|---|---|---|
Line 66: | Line 66: | ||
</pre> | </pre> | ||
}} | }} | ||
+ | |||
+ | **赤外線反射センサの値の取得 [#wc909078] | ||
+ | #ref(gcc_edit_6.png,100%) | ||
+ | 初期化まで終わりましたので、[[処理の流れを描いた図>#x60b5360]]の通り、赤外線反射センサの値を取得します。~ | ||
+ | [[DX_ReadByteData>FDIIILIB#t86b5caf]]はDynamixel製品から様々なデータを直接取得する関数です。~ | ||
+ | |||
+ | ''第1引数''は、Dynamixelの[[ID>FDIIICHAPTER1.1#s7a3f1f6]]です。AX-S1のIDは100です。~ | ||
+ | |||
+ | ''第2引数''は、[[AX-S1コントロールテーブル>FDIIICHAPTER1.1#ye0e23e2]]のメモリマップアドレスです。AX-S1の正面の赤外線反射センサ値のメモリマップアドレスは27です。 | ||
+ | |||
+ | ''第3引数''は、読み出したデータを入れるための変数の[[アドレス>FDIIICHAPTER1.4#s0d770ec]]です。変数の頭に&をつけるとその変数のアドレスという意味になります。AX-S1のコントロールテーブルのメモリマップアドレスとは関係ありません。 | ||
+ | |||
+ | ''第4引数''は、タイムアウト時間(ms)です。ここではタイムアウト時間を10msに設定しています。タイムアウトが頻発して正しくデータが取得できない場合はタイムアウト時間を延長して下さい。 | ||
+ | |||
+ | ''第5引数''には本来、エラーの戻り値を入れるための変数のアドレスを指定しますが、今回はエラーの内容を見ないため、NULLを指定しています。 | ||
+ | |||
+ | **センサ値の表示 [#p736b10d] | ||
+ | 次に[[処理の流れ>#x60b5360]]を描いた図では取得したセンサの値とある閾値を比較するとなっていますが、そもそもセンサの値がどのような数値なのか分からないことには、閾値を決める事ができません。よって先ず取得したセンサの値を表示します。 | ||
+ | #ref(gcc_edit_7.png,100%) | ||
+ | |||
+ | [[fd_printf>FDIIICHAPTER1.4#k44284d5]]はパソコンに文字列を表示するための関数です。~ | ||
+ | %3dの部分にReadDataの値が3桁で表示されます。 | ||
+ | |||
+ | ** 繰り返し [#l145a3e5] | ||
+ | #ref(gcc_edit_8.png,100%) | ||
+ | このままでは一回センサの値を取得して表示するとプログラムが終わってしまいます。センサ値取得と表示の部分を[[while>FDIIICHAPTER1.4#o8733fa9]]で囲って繰り返し実行するようにします。~ | ||
+ | whileで囲ったらその間の行はTabキーで字下げしましょう。~ | ||
+ | whileは()内の条件が成立(true)していれば{}内を繰り返す関数です。ここでは{}内を無限に繰り返すという意味になります。 | ||
+ | |||
+ | [[fd_Wait>FDIIILIB#o4813042]]は指定時間(ms)の間、処理を停止する関数です。 | ||
+ | |||
+ | ''第1引数''は、処理の停止時間(ms)です。ここでは10ms停止します。~ | ||
+ | whileを使用する際は必ずfd_Waitを使用します。fd_Waitを使用しない場合、システム側の監視機能が働いてプログラムが強制終了する可能性があります。 | ||
+ | |||
+ | **プログラムを実行する [#vb9c5600] | ||
+ | 既に動くプログラムとなっていますので、FDIII-HCにプログラムを書き込んで実際に動かしてみましょう。~ | ||
+ | |||
+ | ここでは書き込み方法を簡単に説明します。詳細は[[Chapter1.3の動作確認>FDIIICHAPTER1.3]]を参照して下さい。~ | ||
+ | |||
+ | -機器の接続は[[Chapter2.2の組み立て>FDIIICHAPTER2.2]]を参照して下さい。~ | ||
+ | FDIII-HCの電源をOFFにし、プッシュボタンを押しながらUSBケーブルを差し込む事を忘れないで下さい。 | ||
+ | -メニューの「ツール」→「コンパイルオプション」で「FREEDOM III library for FDIII-HC」を選択しOKをクリックします。~ | ||
+ | 但し既に一度サンプルプログラムを書き込んでおり、ステータスバーに「FREEDOM III library for FDIII-HC」と表示されている場合は必要ありません。 | ||
+ | #ref(gcc_statusbar.png,100%) | ||
+ | -メニューの「コンパイル」→「ビルド」をクリックします。ファイルを保存するダイアログが表示されますので、[[サンプルプログラム>FDIIICHAPTER1.3#r86cf508]]と同じフォルダにAlarmUnit.cとして保存しましょう。 | ||
+ | #ref(gcc_save_dialog.png,100%) | ||
+ | -コンパイルが成功したらOKをクリックします。自動的にSIMPLE TERMが起動します。 | ||
+ | -SIMPLE TERMのメニューの「ファイル」→「プロパティ」をクリックし適切な設定を行います。~ | ||
+ | 詳しくは[[こちら>FDIIICHAPTER1.3#a3b0dd1e]]をご覧下さい。 | ||
+ | 既に設定を行っている場合は必要ありません。 | ||
+ | -SIMPLE TERMのメニューの「通信」→「ポートオープン」をクリックします。 | ||
+ | -[[プログラムの転送>FDIIICHAPTER1.3#aaed87f4]]を行います。 | ||
+ | -<SUCCESS>と表示されたらキーボードで「g」を入力しプログラムを実行します。 | ||
+ | -FDIII-HCの電源スイッチをONにします。このとき電源が供給されるとAX-S1のブザーが「ピッ」と鳴ります。 | ||
+ | |||
+ | ---- | ||
+ | SIMPLE TERM上の最終行に数字が表示されているはずです。AX-S1の正面のセンサに手をかざし、数値が変動することを確認して下さい。 | ||
+ | #ref(Warning_p13.png,100%) | ||
+ | #ref(Warning_p12.png,100%) | ||
+ | |||
+ | 値はセンサの前に何もないと0、手を近づけて行くとだんだん増え、255まで増えるとそれ以上は増えなくなります。つまり値の範囲は0~255です。 |