プログラミング2 anchor.png

Chapter2.3 プログラミング1で赤外線反射センサの値を表示するところまでプログラムを書きました。 いよいよブザーを鳴らして完成させます。

Page Top

条件分岐 anchor.png

処理の流れを描いた図を見て下さい。次はセンサ値とある閾値を比較するというところです。センサ値の範囲は0~255である事を確認しました。閾値は例として100にします。後で必要に応じて調節して下さい。

#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 (true) {
    DX_ReadByteData (100, 27, &ReadData, 10, NULL);
    fd_printf ("%3d\r", ReadData);
    if (ReadData > 100) {

    }
    fd_Wait (10);
  }
}

もしセンサ値が100より大きければ{ }内を実行するという条件分岐です。条件分岐はif文を使います。

今回は{ }内にブザーを鳴らすプログラムを書きます。

Page Top

ブザーを鳴らす anchor.png

#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 (true) {
    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);
  }
}

AX-S1のブザーを鳴らす為、音階と音の長さを指定しています。

Page Top

DX_WriteByteData anchor.png

Dynamixel製品へ1バイトの値を直接設定します。
第1引数は、DynamixelのIDです。AX-S1のIDは100です。

第2引数は、AX-S1コントロールテーブルのアドレスです。アドレス40は音階、アドレス41は音の長さです。

第3引数は、書き込む値です。ここでは例としてそれぞれ10を入力しました。ソの音を1秒(10×0.1秒)鳴らすことになります。

第4引数は、タイムアウト時間(ms)です。ここではタイムアウト時間を10msに設定しています。タイムアウトが頻発して正しくデータが設定できない場合はタイムアウト時間を延長して下さい。

第5引数には本来、エラーの戻り値を入れるための変数のアドレスを指定しますが、今回はエラーの内容を見ないため、NULLを指定しています。

AX-S1のアドレス40はブザーの音階です。詳細はAX-S1コントロールテーブルのBuzzer Data 0を参照して下さい。

AX-S1のアドレス41はブザーの音の長さです。0.1秒単位で音の長さを調節します。詳細はAX-S1コントロールテーブルのBuzzer Data 1を参照して下さい。

Page Top

警報器を動かす anchor.png

プログラムが完成しました。空行を含めてもたったの18行です。如何ですか?
意外と簡単だと感じられたでしょうか?
それではプログラムを書き込んで動かしてみましょう。

ここでは書き込み方法を簡単に説明します。詳細はChapter1.3の動作確認を参照して下さい。

  • USBケーブルをFDII-HCから取り外します。
  • FDIIIの電源スイッチをOFFにし、プッシュボタンを押しながらUSBケーブルを差し込みます。
  • メニューの「コンパイル」→「ビルド」をクリックします。
  • コンパイルが成功したらOKをクリックし、SIMPLE TERMが起動します。
  • SIMPLE TERMのメニューの「通信」→「ポートオープン」をクリックします。
  • プログラムの転送を行います。
  • <SUCCESS>と表示されたらキーボードで「g」を入力しプログラムを実行します。
  • FDIII-HCの電源スイッチをONにします。

Warning_pp4.png

AX-S1の前方センサに手を近づけて行き、センサ値が100を超えるとブザーが鳴るはずです。

これを泥棒が入ってきそうな場所に設置しておけば、泥棒が来てもビックリして帰って行くかもしれません。

次のチャプターへ

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:33:42 (JST) (5028d)