5: 2010-02-24 (水) 19:17:28 eid7gud | 現: 2010-07-15 (木) 11:48:04 eid7gud | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ''只今編集中です。'' | ||
- | |||
*プログラミング [#m6ec823e] | *プログラミング [#m6ec823e] | ||
#ref(SoundMeter_p1.png) | #ref(SoundMeter_p1.png) | ||
- | 「AX-S1で最大音量を測定し、それに対応した角度へAX-12+のホーン動かす」というプログラムを作成します。 | + | 「AX-S1で最大音量を測定し、それに対応した角度へAX-12+のホーンを動かす」というプログラムを作成します。 |
**処理の流れを図にする。 [#z3dcce2c] | **処理の流れを図にする。 [#z3dcce2c] | ||
先ず処理の流れを図にします。 | 先ず処理の流れを図にします。 | ||
#ref(SoundMeter_p2.png) | #ref(SoundMeter_p2.png) | ||
- | AX-S1の最大音量を取得し、それに対応した角度へAX-12+のホーン動かすを繰り返すだけとなります。 | + | AX-S1の最大音量を取得し、それに対応した角度へAX-12+のホーンを動かすを繰り返すだけとなります。 |
**準備 [#r9783670] | **準備 [#r9783670] | ||
Line 62: | Line 61: | ||
音量センサの値は[[Chapter2.5の課題>FDIII-HC Starter Kit Guide Chapter2.5]]で紹介した通り、128を中心に音がすると音量に応じて上下に揺れます。 | 音量センサの値は[[Chapter2.5の課題>FDIII-HC Starter Kit Guide Chapter2.5]]で紹介した通り、128を中心に音がすると音量に応じて上下に揺れます。 | ||
- | 音量最大保持値は音量センサの最大値なので、音量最大保持値の範囲は128~255となります。 | + | 音量最大保持値は音量センサの最大値を保持した値なので、音量最大保持値の範囲は128~255となります。 |
ゴールポジションはせっかく0~1023の範囲があるので、音量最大保持値を3倍した値を代入することで、コールポジションの範囲を384~765にします。~ | ゴールポジションはせっかく0~1023の範囲があるので、音量最大保持値を3倍した値を代入することで、コールポジションの範囲を384~765にします。~ | ||
Line 72: | Line 71: | ||
**音量最大保持値のリセット [#k6c85475] | **音量最大保持値のリセット [#k6c85475] | ||
- | 音量最大保持値は音量の最大値を保持し続けます。従って一度値が最大の255になると、それ以降は255から変化することはありません。もう一度測定するために音量最大保持値をプッシュボタンで値をリセットするようにします。 | + | 音量最大保持値は、音量の最大値を保持し続けます。従って一度値が最大の255になると、それ以降は255から変化することはありません。もう一度初めから測定するために音量最大保持値をプッシュボタンでリセットするようにします。 |
***プッシュボタンの取得 [#i2b73f37] | ***プッシュボタンの取得 [#i2b73f37] | ||
Line 90: | Line 89: | ||
fd_DXWriteWordData (1, 30, ReadData * 3); の後ろに | fd_DXWriteWordData (1, 30, ReadData * 3); の後ろに | ||
PB = fd_GetPB(); | PB = fd_GetPB(); | ||
- | と入力します。変数PBにプッシュボタンの状態がtrue(押されている)、false(押されていない)で代入されます。 | + | と入力します。変数PBにプッシュボタンの状態が代入されます(true:押されている、false:押されていない)。 |
***プッシュボタンが押されたら [#z76b3e95] | ***プッシュボタンが押されたら [#z76b3e95] | ||
Line 99: | Line 98: | ||
PB = fd_GetPB();の後ろに | PB = fd_GetPB();の後ろに | ||
if(PB == true){ | if(PB == true){ | ||
+ | |||
} | } | ||
- | と入力します。PB=trueではなくPB==trueです。「=」だとPBにtrueが代入されてしまい、ifの条件にはなりません。 | + | と入力します。PB=trueではなくPB==trueです。「=」だとPBにtrueが代入されてしまうだけで、ifの条件にはなりません。 |
- | 変数PBがtrueなら、つまりプッシュボタンが押されたら{ }内を実行します。 | + | 変数PBがtrueなら、つまりプッシュボタンが押されたらifの後の{ }内を実行します。 |
***音量最大保持値をリセットする。 [#xd0d0980] | ***音量最大保持値をリセットする。 [#xd0d0980] | ||
Line 115: | Line 114: | ||
#include <fd.h> | #include <fd.h> | ||
#define KEY_QUIT { if(fd_rx_buff()) fd_SoftReset();} | #define KEY_QUIT { if(fd_rx_buff()) fd_SoftReset();} | ||
+ | |||
void main (void) { | void main (void) { | ||
uint8_t ReadData; | uint8_t ReadData; | ||
bool PB; | bool PB; | ||
+ | |||
fd_Init (0, BT_CONSOLE, FD_BEEP_MMI | FD_BEEP_PACKETERR | FD_BEEP_LOWVOLTAGE | FD_BEEP_BOOTUP, 7.4); | fd_Init (0, BT_CONSOLE, FD_BEEP_MMI | FD_BEEP_PACKETERR | FD_BEEP_LOWVOLTAGE | FD_BEEP_BOOTUP, 7.4); | ||
fd_DXWriteWordData (1, 34, 200); | fd_DXWriteWordData (1, 34, 200); | ||
+ | |||
while (1) { | while (1) { | ||
fd_DXReadByteData (100, 36, &ReadData); | fd_DXReadByteData (100, 36, &ReadData); | ||
Line 137: | Line 136: | ||
プログラムが完成しました。プログラムを書き込んで動かしてみましょう。 | プログラムが完成しました。プログラムを書き込んで動かしてみましょう。 | ||
+ | FDIII-HCのプッシュボタンを押しリセットしてから、音を出すとAX-12+が音量に応じて動くことを確認しましょう。 | ||
+ | |||
+ | #ref(SoundMeter_p9.png) | ||
[[次のチャプターへ>FDIII-HC Starter Kit Guide Chapter4.4]]~ | [[次のチャプターへ>FDIII-HC Starter Kit Guide Chapter4.4]]~ | ||
[[FDIII-HC Starter Kit Guide]]へ戻る | [[FDIII-HC Starter Kit Guide]]へ戻る |