|
一覧
検索
最新
ページへ戻る
履歴
FDIII-HC Starter Kit Guide Chapter4.3
のバックアップソース(No.5)
knowledge
:
FDIII-HC Starter Kit Guide Chapter4.3
のバックアップソース(No.5)
差分
を表示
現在との差分
を表示
FDIII-HC Starter Kit Guide Chapter4.3
へ行く。
« Prev
Next »
''只今編集中です。'' *プログラミング [#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] #ref(SoundMeter_p3.png) 今回のプログラムでは条件による分岐がありませんので、以下の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です。 音量最大保持値はアドレス35の音量測定値の最大値を保持し続けます。 fd_DXReadByteData (100, 27, &ReadData); の第2引数を36に書き換えます。 fd_DXReadByteData (100, 36, &ReadData); **AX-12+のホーンを動かす [#a86b83f6] #ref(SoundMeter_p4.png) 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_printf ("%3d\r", ReadData); の後ろに fd_DXWriteWordData (1, 30, ReadData); と入力します。 ReadDataの前に&は付けません。変数の前に&を付けるとその変数の[[アドレス>FDIII-HC Starter Kit Guide Chapter1.4#b45fcfd3]]になります。 ゴールポジションに書き込むのは、ReadDataのアドレスではなく、ReadDataに入っている値です。 **ゴールポジションと音量最大保持値のデータ範囲 [#p2dbd58e] #ref(SoundMeter_p5.png) ゴールポジションのデータの範囲は0~1023でした。 音量最大保持値のデータ範囲はどうでしょう。 音量センサの値は[[Chapter2.5の課題>FDIII-HC Starter Kit Guide Chapter2.5]]で紹介した通り、128を中心に音がすると音量に応じて上下に揺れます。 音量最大保持値は音量センサの最大値なので、音量最大保持値の範囲は128~255となります。 ゴールポジションはせっかく0~1023の範囲があるので、音量最大保持値を3倍した値を代入することで、コールポジションの範囲を384~765にします。~ つまり音量最大保持値が128のときゴールポジションは384、200のとき600、255のとき765になります。 fd_DXWriteWordData (1, 30, ReadData * 3); 上記のように書き換えます。*は掛け算です。 **音量最大保持値のリセット [#k6c85475] 音量最大保持値は音量の最大値を保持し続けます。従って一度値が最大の255になると、それ以降は255から変化することはありません。もう一度測定するために音量最大保持値をプッシュボタンで値をリセットするようにします。 ***プッシュボタンの取得 [#i2b73f37] #ref(SoundMeter_p6.png) 以下はFDIII-HCのプッシュボタンの状態を取得する関数です。 bool fd_GetPB (void); ''戻り値''はプッシュボタンの状態です。ボタンが押されているとtrueを返し、押されていないとfalseを返します。 ''引数''はありません。 uint8_t ReadData;の後ろに bool PB; と入力します。 プッシュボタンの状態を保存するための変数です。 boolは、true又はfalseで表されるデータの型です。 fd_DXWriteWordData (1, 30, ReadData * 3); の後ろに PB = fd_GetPB(); と入力します。変数PBにプッシュボタンの状態がtrue(押されている)、false(押されていない)で代入されます。 ***プッシュボタンが押されたら [#z76b3e95] #ref(SoundMeter_p7.png) プッシュボタンが押されたら音量最大保持値をリセットします。前項より「プッシュボタンが押されたら」は、もし変数PBがtrueならと言い代えられます。 もし~なら~という条件分岐には、if分を使います。 PB = fd_GetPB();の後ろに if(PB == true){ } と入力します。PB=trueではなくPB==trueです。「=」だとPBにtrueが代入されてしまい、ifの条件にはなりません。 変数PBがtrueなら、つまりプッシュボタンが押されたら{ }内を実行します。 ***音量最大保持値をリセットする。 [#xd0d0980] #ref(SoundMeter_p8.png) fd_DXWriteByteData関数でAX-S1の音量最大保持値(アドレス36)に0を書き込みます。 if(PB == true){の後に fd_DXWriteByteData (100, 36, 0); と入力します。 第1引数のIDは100、第2引数のアドレスは36、第3引数の書き込む値は0です。 **動作確認 [#f2fe98cd] #include <fd.h> #define KEY_QUIT { if(fd_rx_buff()) fd_SoftReset();} void main (void) { uint8_t ReadData; bool PB; fd_Init (0, BT_CONSOLE, FD_BEEP_MMI | FD_BEEP_PACKETERR | FD_BEEP_LOWVOLTAGE | FD_BEEP_BOOTUP, 7.4); fd_DXWriteWordData (1, 34, 200); while (1) { fd_DXReadByteData (100, 36, &ReadData); fd_printf ("%3d\r", ReadData); fd_DXWriteWordData (1, 30, ReadData * 3); PB = fd_GetPB(); if(PB == true){ fd_DXWriteByteData (100, 36, 0); } KEY_QUIT; } } プログラムが完成しました。プログラムを書き込んで動かしてみましょう。 [[次のチャプターへ>FDIII-HC Starter Kit Guide Chapter4.4]]~ [[FDIII-HC Starter Kit Guide]]へ戻る
« Prev
Next »
FDIII-HC Starter Kit Guide Chapter4.3 のバックアップ一覧
FDIII-HC Starter Kit Guide Chapter4.3 のバックアップソース(No. All)
1: 2010-01-21 (木) 18:26:31
eid7gud
2: 2010-01-21 (木) 18:57:58
eid7gud
3: 2010-01-21 (木) 22:14:37
eid7gud
4: 2010-02-23 (火) 19:57:08
eid7gud
5: 2010-02-24 (水) 19:17:28
eid7gud
6: 2010-02-25 (木) 16:03:05
eid7gud
現: 2010-07-15 (木) 11:48:04
eid7gud
Copyright© 1989,2024 BestTechnology Co.,Ltd.
メニュー
トップ
ニュース
お知らせ
新商品情報
更新情報
マニュアル類
技術情報
チュートリアル
FAQ
お問合せ
技術的なお問合せ
その他お問合せ
お見積り
ブログ
会社案内
ショッピング
ご利用案内
検索
カテゴリ 一覧
ロボットキット
Dynamixelシリーズ
マイコンボード
相撲ロボット
センサ
通信機器
お客様ページ