3: 2011-07-11 (月) 12:18:58 yoshida | 現: 2011-07-12 (火) 12:33:42 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]] [#q19c6280] | ||
+ | Dynamixel製品へ1バイトの値を直接設定します。~ | ||
+ | ''第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行です。如何ですか?~ | ||
+ | 意外と簡単だと感じられたでしょうか?~ | ||
それではプログラムを書き込んで動かしてみましょう。~ | それではプログラムを書き込んで動かしてみましょう。~ | ||