まとめ 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へ戻る。


Front page   Diff ReloadPrint View   Page list Search Recent changes   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Last-modified: 2011-07-12 (Tue) 12:56:11 (JST) (3285d)