プログラミング② anchor.png

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

Page Top

条件分岐 anchor.png

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

Warning_pp1.png

もしセンサ値が100以下なら何もしない、100より大きければブザーを鳴らすという条件分岐です。条件分岐はif文を使います。
センサ値表示の後ろに

if(ReadData > 100) {

}

と入力して下さい。
もしReadDataが100より大きければ{ }内を実行するという意味になります。
{ }内にブザーを鳴らすプログラムを書きます。

Page Top

ブザーを鳴らす anchor.png

Warning_pp2.png

AX-S1のブザーを鳴らします。ブザーはAX-S1に音階と音の長さを指定することで鳴ります。if関数の{ }内に

fd_DXWriteByteData (100, 40, 10);
fd_DXWriteByteData (100, 41, 10);

と入力して下さい。1行目は音階、2行目は音の長さを指定します。
fd_DXWriteByteDataはAX-S1やAX-12+に1バイトのデータを書き込むための関数です。

Warning_pp3.png

fd_DXWriteByteDataは関数名です

第1引数は、DynamixelのIDです。AX-S1のIDは100です。

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

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

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

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

Page Top

警報器を動かす anchor.png

Warning_pp2.png
#include <fd.h>

void main (void) {
  uint8_t ReadData;
  
  fd_Init (0, BT_CONSOLE, 0, 7.4);
  
  while (1) {
    fd_DXReadByteData (100, 27, &ReadData);
    fd_printf("%3d\r", ReadData);
    if(ReadData > 100) {
      fd_DXWriteByteData (100, 40, 10);
      fd_DXWriteByteData (100, 41, 10);
    }
  }
}

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

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

  • USBケーブルをFDII-HCから取り外します。
  • FDIIIの電源スイッチをOFFにし、プッシュボタンを押しながらUSBケーブルを差し込みます。
  • メニューの「コンパイル」→「ビルド」をクリックします。
  • コンパイルが成功したらOKをクリックし、SIMPLE TERMが起動します。
  • SIMPLE TERMのメニューの「通信」→「ポートオープン」をクリックします。
  • SIMPLE TERM上に
    --< FDIII Ver1.0 by BestTechnology >--
    と表示される事を確認してから、走る人マークをクリックします。
  • <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-02-02 (Wed) 19:29:42 (JST) (3525d)