1: 2011-07-04 (月) 12:55:57 yoshida ソース 現: 2011-07-12 (火) 12:56:11 yoshida ソース
Line 1: Line 1:
 +TITLE:警報装置のまとめ
*まとめ [#zda9518e] *まとめ [#zda9518e]
FREEDOMライブラリを読み込むために最初に必ず FREEDOMライブラリを読み込むために最初に必ず
Line 13: Line 14:
で初期化します。 で初期化します。
-ここまではどのプログラムでも殆んど同じですので、新しいプログラムを作るときにはコピー&ペーストします。+初期化についてはどのプログラムでも殆んど同じですので、新しいプログラムを作るときには必ず記述して下さい。
Dynamixelから1バイトのデータを取り出すには Dynamixelから1バイトのデータを取り出すには
Line 25: Line 26:
取り込んだ値を表示したりするにはfd_printfを使います。 取り込んだ値を表示したりするにはfd_printfを使います。
 +
 +*課題 [#r9763b8b]
 +#ref(Warning_k1.png,100%)
 +Chapter2.3, 2.4を参考に「''音センサに反応があったらブザーを鳴らす''」という方法でプログラムを書いてみましょう。~
 +また、Chapter2.1で紹介した本キットの機能を使って、自分で考えた装置の制作にもチャレンジしてみましょう。
 +
 +ヒント~
 +-音量センサの値はAX-S1のアドレス35
 +-音量センサの値は128を中心に音がすると音量に応じて上下に揺れる(詳細は[[AX-S1コントロールテーブルのSound Data>AXS1CNTLTBL#a9725398]]を参照して下さい)
 +#ref(Warning_k2.png,100%)
 +
 +*補足 [#g9696541]
 +**プログラムの終了 [#h32fa325]
 +プログラムを書き込むには一度ブートローダのコマンドモードに入らなければなりません。ブートローダのコマンドモードに入る方法として、これまでプッシュボタンを押しながらUSBケーブルを接続するという方法をとっていましたが、毎回USBケーブルを抜き差しするのは面倒です。~
 +そこでUSBケーブルを抜き差ししないでブートローダのコマンドモードに入る方法を紹介します。~
 +ブートローダのコマンドモードに入るのは簡単で、プログラムを終了するだけです。~
 +#html{{
 +<pre class="brush:c">
 +#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 (!fd_rx_buff () && !fd_GetPB ()) {
 +   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);
 +  }
 +}
 +}
 +</pre>
 +}}
 +[[while>FDIIICHAPTER1.4#o8733fa9]]文は()内の条件が成り立っている間は処理を繰り返しますので、while (true) で無限に処理を繰り返していましたが、プログラムを終了するため、条件を設定します。~
 +while文の条件を分解してみましょう。~
 +#html{{
 +<pre class="brush:c">
 +  while (!fd_rx_buff ()) {
 +</pre>
 +}}
 +[[fd_rx_buff ()>FDIIILIB#c1552bcf]]はキーボード入力のデータ数を取得します。~
 +fd_rx_buff関数の前に[[!>FDIIICHAPTER1.4#seea64bd]](エクスクラメーションマーク)を付けていますので、これで戻値を反転しています。つまり戻値が0の場合にwhile条件が成り立ちます。戻値が0ということはキーボード入力がないということなので、キーボード入力されるまでwhile文を繰り返すことになります。~
 +#html{{
 +<pre class="brush:c">
 +  while (!fd_GetPB ()) {
 +</pre>
 +}}
 +[[fd_GetPB ()>FDIIILIB#pfa91195]]はプッシュボタンの押下を検知します。~
 +fd_GetPB関数の前にも[[!>FDIIICHAPTER1.4#seea64bd]](エクスクラメーションマーク)を付けて戻値を反転しています。つまりwhileの条件はプッシュボタンが押されていなければwhile文を繰り返すことになります。~
 +[[&&>FDIIICHAPTER1.4#seea64bd]]で連結されていますので、whileの条件はキーボードからの入力がなく、かつプッシュボタンも押されていない、となります。~
 +これはSIMPLE TERM上でキーボードからどのキーでも良いので入力するか、プッシュボタンを押すとプログラムが終了するということです。~
 +プログラムが終了すれば、ブートローダのコマンドモードに入り、新たなプログラムの書込みが可能となります。~
 +
 +これによりプログラムを書き込むたびにFDIII-HCの電源をON,OFFしたり、USBケーブルを抜き差しする手間が省けます。~
 +書き込んで試してみて下さい。
 +
 +[[FDIII-HC Starter Kit Guide>LEARNINGGUIDE]]へ戻る。


トップ   差分 リロード印刷に適した表示   全ページ一覧 単語検索 最新ページの一覧   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom