ページへ戻る

− Links

 印刷 

FDIII-HC Starter Kit Guide Chapter4.3 のバックアップソース(No.4) :: Besttechnology

knowledge:FDIII-HC Starter Kit Guide Chapter4.3 のバックアップソース(No.4)

« Prev[4]  Next »[5]
''只今編集中です。''

*プログラミング [#m6ec823e]
#ref(SoundMeter_p1.png)
「AX-S1で最大音量を測定し、それに対応した角度へAX-12+のホーン動かす」というプログラムを作成します。
**処理の流れを図にする。 [#z3dcce2c]
先ず処理の流れを図にします。
#ref(SoundMeter_p2.png)
AX-S1の最大音量を取得し、それに対応した角度へAX-12+のホーン動かすを繰り返すだけとなります。

**準備 [#r9783670]
GCC Developer Liteを起動して、Chapter3で作成したプログラムを開いて下さい。

メニューの「ファイル」→「開く」→ ファイル(AutomaticDoor.c)を選択し、「開く」をクリックします。
----
ファイルを別の名前で保存します。

メニューの「ファイル」→「名前を付けて保存」→ファイル名に「SoundMeter.c」と入力し、[[Chapter1.3のサンプルプログラムのダウンロード>FDIII-HC Starter Kit Guide Chapter1.3#r86cf508]]で作成したSampleフォルダに「保存」します。

**不要部位を削除 [#y36d4588]
今回のプログラムでは条件による分岐がありませんので、以下のif~else~文を削除します。
    if (ReadData > 100) {
      fd_DXWriteWordData (1, 30, 300);
      fd_Wait (2000);
    }
    else {
      fd_DXWriteWordData (1, 30, 512);
    }
**音量最大値取得 [#q67b1dd0]
Chapter3ではAX-S1の正面赤外線反射センサの値を取得しました。今回は最大音量を取得します。

[[AX-S1コントロールテーブル>FDIII-HC Starter Kit Guide Chapter1.1#u70f1fa1]]を見て下さい。音量最大保持値はアドレス36です。
音量最大保持値はアドレス36の音量測定値の最大値を保持し続けます。
 fd_DXReadByteData (100, 27, &ReadData);
の第2引数を36に書き換えます。
 fd_DXReadByteData (100, 36, &ReadData);

**AX-12+のホーンを動かす [#a86b83f6]
AX-12+のホーンの角度をメーターに見立て、音量最大保持値に対応した角度にホーンを動かします。

AX-12+のホーンを動かすには、AX-12+のコントロールテーブルのアドレス30,31にゴールポジションを書き込みます。2バイトのデータを書き込むにはfd_DXWriteWordData関数を使います。詳しくは[[Chapter3.3のバーを開ける>FDIII-HC Starter Kit Guide Chapter3.3#icc81839]]を参照して下さい。
 fd_DXWriteWordData (1, 30, ゴールポジション);
ゴールポジションの部分には何を入れるべきでしょうか?

音量最大保持値に対応した角度にAX-12+のホーンを動かしますので、ゴールポジション=音量最大保持値です。~
音量最大保持値は
 fd_DXReadByteData (100, 36, &ReadData);
で変数ReadDataに代入されます。従ってゴールポジションにはReadDataと書きます。
 fd_DXWriteWordData (1, 30, ReadData);
ReadDataの前に&は付けません。変数の前に&を付けるとその変数の[[アドレス>FDIII-HC Starter Kit Guide Chapter1.4#b45fcfd3]]になります。
ゴールポジションに書き込むのは、ReadDataのアドレスではなく、ReadDataに入っている値です。

**ゴールポジションと音量最大保持値のデータ範囲 [#p2dbd58e]
ゴールポジションのデータの範囲は0~1023でした。

« Prev[4]  Next »[5]