5: 2011-07-11 (月) 12:28:48 yoshida ソース 6: 2011-07-12 (火) 18:45:40 yoshida ソース
Line 20: Line 20:
**バーの開閉から音量最大値の取得へ変更 [#tfcaa108] **バーの開閉から音量最大値の取得へ変更 [#tfcaa108]
バーの開閉部分を削除し、正面赤外線センサの値の取得を音量最大値の取得へ変更します。 バーの開閉部分を削除し、正面赤外線センサの値の取得を音量最大値の取得へ変更します。
-#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); 
 + 
 +  fd_DXSetTorqueLimit (1, 154); 
 + 
 +  while (!fd_rx_buff () && !fd_GetPB ()) { 
 +   DX_ReadByteData (100, 27, &ReadData, 10, NULL); 
 +   fd_printf ("%3d\r", ReadData); 
 +   if (ReadData > 100) { 
 +     fd_DXSetPosition (1, 300); 
 +     fd_Wait (2000); 
 +   } else { 
 +     fd_DXSetPosition (1, 512); 
 +   } 
 +   fd_Wait (10); 
 +  } 
 +
 +</pre> 
 +}} 
 +#ref(down_arrow.png
 +#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); 
 + 
 +  fd_DXSetTorqueLimit (1, 154); 
 + 
 +  while (!fd_rx_buff () && !fd_GetPB ()) { 
 +   DX_ReadByteData (100, 36, &ReadData, 10, NULL); 
 +   fd_printf ("%3d\r", ReadData); 
 +   fd_Wait (10)
 +  } 
 +
 +</pre> 
 +}}
DX_ReadByteDataの第2引数を27から36へ変更します。 DX_ReadByteDataの第2引数を27から36へ変更します。
[[AX-S1コントロールテーブル>FDIIICHAPTER1.1#ye0e23e2]]にある通り、音量最大保持値はアドレス36です。 [[AX-S1コントロールテーブル>FDIIICHAPTER1.1#ye0e23e2]]にある通り、音量最大保持値はアドレス36です。
Line 26: Line 72:
**AX-12+のホーンを動かす [#r33f5d9f] **AX-12+のホーンを動かす [#r33f5d9f]
-#ref(gcc_edit_2.png)+#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); 
 + 
 +  fd_DXSetTorqueLimit (1, 154); 
 + 
 +  while (!fd_rx_buff () && !fd_GetPB ()) { 
 +   DX_ReadByteData (100, 36, &ReadData, 10, NULL); 
 +   fd_printf ("%3d\r", ReadData); 
 +   fd_DXSetPosition (1, ReadData); 
 +   fd_Wait (10)
 +  } 
 +
 +</pre> 
 +}}
AX-12+のホーンの角度をメーターに見立て、音量最大保持値に対応した角度にホーンを動かします。 AX-12+のホーンの角度をメーターに見立て、音量最大保持値に対応した角度にホーンを動かします。
Line 32: Line 98:
音量最大保持値に対応した角度にAX-12+のホーンを動かしますので、ゴールポジション=音量最大保持値です。~ 音量最大保持値に対応した角度にAX-12+のホーンを動かしますので、ゴールポジション=音量最大保持値です。~
-音量最大保持値は +音量最大保持値は変数ReadDataに代入されますので、そのままゴールポジションにReadDataを指定します。
- DX_ReadByteData (100, 36, &ReadData, 10, NULL); +
-で変数ReadDataに代入されます。従ってゴールポジションにはReadDataと書きます。+
ReadDataの前に&は付けません。変数の前に&を付けるとその変数のアドレスになります。 ReadDataの前に&は付けません。変数の前に&を付けるとその変数のアドレスになります。
Line 40: Line 104:
**ゴールポジションと音量最大保持値のデータ範囲 [#ke591b16] **ゴールポジションと音量最大保持値のデータ範囲 [#ke591b16]
-#ref(gcc_edit_3.png)+#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); 
 + 
 +  fd_DXSetTorqueLimit (1, 154); 
 + 
 +  while (!fd_rx_buff () && !fd_GetPB ()) { 
 +   DX_ReadByteData (100, 36, &ReadData, 10, NULL); 
 +   fd_printf ("%3d\r", ReadData); 
 +   fd_DXSetPosition (1, ReadData * 3); 
 +   fd_Wait (10)
 +  } 
 +
 +</pre> 
 +}}
ゴールポジションのデータの範囲は0~1023でした。 ゴールポジションのデータの範囲は0~1023でした。
音量最大保持値のデータ範囲はどうでしょう。 音量最大保持値のデータ範囲はどうでしょう。
Line 52: Line 136:
**音量最大保持値のリセット [#ie242320] **音量最大保持値のリセット [#ie242320]
音量最大保持値は、音量の最大値を保持し続けます。従って一度値が最大の255になると、それ以降は255から変化することはありません。もう一度初めから測定するために音量最大保持値をプッシュボタンでリセットするようにします。 音量最大保持値は、音量の最大値を保持し続けます。従って一度値が最大の255になると、それ以降は255から変化することはありません。もう一度初めから測定するために音量最大保持値をプッシュボタンでリセットするようにします。
-#ref(gcc_edit_4.png,100%) 
-while文で使用していたプッシュボタンの条件を外し、新たにゴールポジション設定後にif文の条件として使用します。 
-プッシュボタンが押されたらリセットを行いますので、!(エクスクラメーションマーク)は除きます。 
-リセットはアドレス36(音量最大保持値)に0を書込むことで実施します。 
- 
-**動作確認 [#i7d7d3c6] 
#html{{ #html{{
-<pre class="brush: c">+<pre class="brush:c">
#include <fd.h> #include <fd.h>
void main (void) { void main (void) {
Line 73: Line 151:
   DX_ReadByteData (100, 36, &ReadData, 10, NULL);    DX_ReadByteData (100, 36, &ReadData, 10, NULL);
   fd_printf ("%3d\r", ReadData);    fd_printf ("%3d\r", ReadData);
-   fd_DXSetPosition (1, ReadData * 3);+   fd_DXSetPosition (1, ReadData);
   if (fd_GetPB ()) {    if (fd_GetPB ()) {
     DX_WriteByteData (100, 36, 0, 10, NULL);      DX_WriteByteData (100, 36, 0, 10, NULL);
Line 82: Line 160:
</pre> </pre>
}} }}
 +while文で使用していたプッシュボタンの条件を外し、新たにゴールポジション設定後にif文の条件として使用します。
 +プッシュボタンが押されたらリセットを行いますので、!(エクスクラメーションマーク)は除きます。
 +リセットはアドレス36(音量最大保持値)に0を書込むことで実施します。
 +**動作確認 [#i7d7d3c6]
プログラムが完成しました。プログラムを書き込んで動かしてみましょう。 プログラムが完成しました。プログラムを書き込んで動かしてみましょう。


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