まとめ anchor.png

FREEDOMライブラリを読み込むために最初に必ず

#include <fd.h>

を書きます。

実際の処理はmain関数の{}の中に書きます。

main関数内でFREEDOMライブラリを使用する前に必ず

  • fd_SetBeepCondition (FD_BEEP_MMI | FD_BEEP_PACKETERR | FD_BEEP_LOWVOLTAGE | FD_BEEP_BOOTUP);
  • fd_SetUVThreshold (7.4);
  • DX_ChangeBaudrate (1000000);

で初期化します。

初期化についてはどのプログラムでも殆んど同じですので、新しいプログラムを作るときには必ず記述して下さい。

Dynamixelから1バイトのデータを取り出すには

DX_ReadByteData (ID, アドレス, &変数名, タイムアウト時間, NULL);

を使います。値を入れる変数名の前に&を付けるのを忘れないよう注意しましょう。変数名の前に&を付けると変数のアドレスを表します。
今回はエラーコードを使用しない為、NULLを指定していますが、エラーコードを使用する際はTDXAlarm型の変数のアドレスを指定します。

Dynamixelに1バイトのデータを書き込むには

DX_WriteByteData (ID, アドレス, 書き込む値, タイムアウト時間, NULL);

を使います。

取り込んだ値を表示したりするにはfd_printfを使います。

Page Top

課題 anchor.png

Warning_k1.png

Chapter2.3, 2.4を参考に「音センサに反応があったらブザーを鳴らす」という方法でプログラムを書いてみましょう。
また、Chapter2.1で紹介した本キットの機能を使って、自分で考えた装置の制作にもチャレンジしてみましょう。

ヒント

Page Top

補足 anchor.png

Page Top

プログラムの終了 anchor.png

プログラムを書き込むには一度ブートローダのコマンドモードに入らなければなりません。ブートローダのコマンドモードに入る方法として、これまでプッシュボタンを押しながらUSBケーブルを接続するという方法をとっていましたが、毎回USBケーブルを抜き差しするのは面倒です。
そこでUSBケーブルを抜き差ししないでブートローダのコマンドモードに入る方法を紹介します。
ブートローダのコマンドモードに入るのは簡単で、プログラムを終了するだけです。

#include <fd.h>
void main (void) {
  uint8_t ReadData;

  fd_SetBeepCondition (FD_BEEP_MMI | FD_BEEP_PACKETERR | FD_BEEP_LOWVOLTAGE | FD_BEEP_BOOTUP);
  fd_SetUVThreshold (7.4);
  DX_ChangeBaudrate (1000000);

  while (!fd_rx_buff () && !fd_GetPB ()) {
    DX_ReadByteData (100, 27, &ReadData, 10, NULL);
    fd_printf ("%3d\r", ReadData);
    if (ReadData > 100) {
      DX_WriteByteData (100, 40, 10, 10, NULL);
      DX_WriteByteData (100, 41, 10, 10, NULL);
    }
    fd_Wait (10);
  }
}
}

while文は()内の条件が成り立っている間は処理を繰り返しますので、while (true) で無限に処理を繰り返していましたが、プログラムを終了するため、条件を設定します。
while文の条件を分解してみましょう。

  while (!fd_rx_buff ()) {

fd_rx_buff ()はキーボード入力のデータ数を取得します。
fd_rx_buff関数の前に!(エクスクラメーションマーク)を付けていますので、これで戻値を反転しています。つまり戻値が0の場合にwhile条件が成り立ちます。戻値が0ということはキーボード入力がないということなので、キーボード入力されるまでwhile文を繰り返すことになります。

  while (!fd_GetPB ()) {

fd_GetPB ()はプッシュボタンの押下を検知します。
fd_GetPB関数の前にも!(エクスクラメーションマーク)を付けて戻値を反転しています。つまりwhileの条件はプッシュボタンが押されていなければwhile文を繰り返すことになります。
&&で連結されていますので、whileの条件はキーボードからの入力がなく、かつプッシュボタンも押されていない、となります。
これはSIMPLE TERM上でキーボードからどのキーでも良いので入力するか、プッシュボタンを押すとプログラムが終了するということです。
プログラムが終了すれば、ブートローダのコマンドモードに入り、新たなプログラムの書込みが可能となります。

これによりプログラムを書き込むたびにFDIII-HCの電源をON,OFFしたり、USBケーブルを抜き差しする手間が省けます。
書き込んで試してみて下さい。

FDIII-HC Starter Kit Guideへ戻る。


トップ   差分 リロード印刷に適した表示   全ページ一覧 単語検索 最新ページの一覧   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
最終更新: 2011-07-12 (火) 12:56:11 (JST) (4644d)