3: 2011-07-11 (月) 12:18:58 yoshida ソース 4: 2011-07-11 (月) 20:40:05 yoshida ソース
Line 6: Line 6:
**条件分岐 [#v85bf440] **条件分岐 [#v85bf440]
[[処理の流れ>FDIIICHAPTER2.3#x60b5360]]を描いた図を見て下さい。次はセンサ値とある閾値を比較するというところです。センサ値の範囲は0~255である事を確認しました。閾値は例として100にします。後で必要に応じて調節して下さい。~ [[処理の流れ>FDIIICHAPTER2.3#x60b5360]]を描いた図を見て下さい。次はセンサ値とある閾値を比較するというところです。センサ値の範囲は0~255である事を確認しました。閾値は例として100にします。後で必要に応じて調節して下さい。~
-#ref(gcc_edit_1.png,100%)+#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 (true) { 
 +   DX_ReadByteData (100, 27, &ReadData, 10, NULL); 
 +   fd_printf ("%3d\r", ReadData); 
 +   if (ReadData > 100) { 
 + 
 +   } 
 +   fd_Wait (10)
 +  } 
 +
 +</pre> 
 +}}
もしセンサ値が100より大きければ{ }内を実行するという条件分岐です。条件分岐は[[if文>FDIIICHAPTER1.4#c6144380]]を使います。~ もしセンサ値が100より大きければ{ }内を実行するという条件分岐です。条件分岐は[[if文>FDIIICHAPTER1.4#c6144380]]を使います。~
~ ~
Line 12: Line 32:
**ブザーを鳴らす [#v999f03d] **ブザーを鳴らす [#v999f03d]
-#ref(gcc_edit_2.png,100%) 
-AX-S1のブザーを鳴らす為、[[DX_WriteByteData>FDIIILIB#pb95f8ec]]関数で音階と音の長さを指定しています。~ 
-DX_WriteByteDataはDynamixel製品へ値を直接設定し、制御するための関数です。 
- 
-''第1引数''は、Dynamixelの[[ID>FDIIICHAPTER1.1#s7a3f1f6]]です。AX-S1のIDは100です。~ 
- 
-''第2引数''は、[[AX-S1コントロールテーブル>FDIIICHAPTER1.1#ye0e23e2]]のアドレスです。アドレス40は音階、アドレス41は音の長さです。~ 
- 
-''第3引数''は、書き込む値です。ここでは例としてそれぞれ10を入力しました。ソの音を1秒(10×0.1秒)鳴らすことになります。~ 
- 
-''第4引数''は、タイムアウト時間(ms)です。ここではタイムアウト時間を10msに設定しています。タイムアウトが頻発して正しくデータが設定できない場合はタイムアウト時間を延長して下さい。 
- 
-''第5引数''には本来、エラーの戻り値を入れるための変数のアドレスを指定しますが、今回はエラーの内容を見ないため、NULLを指定しています。 
- 
- 
-AX-S1のアドレス40はブザーの音階です。詳細は[[AX-S1コントロールテーブルのBuzzer Data 0>AXS1CNTLTBL#h7380696]]を参照して下さい。 
- 
-AX-S1のアドレス41はブザーの音の長さです。0.1秒単位で音の長さを調節します。詳細は[[AX-S1コントロールテーブルのBuzzer Data 1>AXS1CNTLTBL#jdce8043]]を参照して下さい。 
- 
-**警報器を動かす [#l7fb3993] 
-プログラムが完成しました。空行を含めてもたったの18行です。如何ですか?~ 
-意外と簡単だと感じられたでしょうか?~ 
#html{{ #html{{
-<pre class="brush: c">+<pre class="brush:c">
#include <fd.h> #include <fd.h>
void main (void) { void main (void) {
Line 54: Line 52:
  }   }
} }
- 
</pre> </pre>
}} }}
 +AX-S1のブザーを鳴らす為、[[DX_WriteByteData>FDIIILIB#pb95f8ec]]関数で音階と音の長さを指定しています。~
 +DX_WriteByteDataはDynamixel製品へ値を直接設定し、制御するための関数です。
 +
 +''第1引数''は、Dynamixelの[[ID>FDIIICHAPTER1.1#s7a3f1f6]]です。AX-S1のIDは100です。~
 +
 +''第2引数''は、[[AX-S1コントロールテーブル>FDIIICHAPTER1.1#ye0e23e2]]のアドレスです。アドレス40は音階、アドレス41は音の長さです。~
 +
 +''第3引数''は、書き込む値です。ここでは例としてそれぞれ10を入力しました。ソの音を1秒(10×0.1秒)鳴らすことになります。~
 +
 +''第4引数''は、タイムアウト時間(ms)です。ここではタイムアウト時間を10msに設定しています。タイムアウトが頻発して正しくデータが設定できない場合はタイムアウト時間を延長して下さい。
 +
 +''第5引数''には本来、エラーの戻り値を入れるための変数のアドレスを指定しますが、今回はエラーの内容を見ないため、NULLを指定しています。
 +
 +
 +AX-S1のアドレス40はブザーの音階です。詳細は[[AX-S1コントロールテーブルのBuzzer Data 0>AXS1CNTLTBL#h7380696]]を参照して下さい。
 +
 +AX-S1のアドレス41はブザーの音の長さです。0.1秒単位で音の長さを調節します。詳細は[[AX-S1コントロールテーブルのBuzzer Data 1>AXS1CNTLTBL#jdce8043]]を参照して下さい。
 +
 +**警報器を動かす [#l7fb3993]
 +プログラムが完成しました。空行を含めてもたったの18行です。如何ですか?~
 +意外と簡単だと感じられたでしょうか?~
それではプログラムを書き込んで動かしてみましょう。~ それではプログラムを書き込んで動かしてみましょう。~


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