5: 2011-07-11 (月) 12:26:17 yoshida ソース 6: 2011-07-11 (月) 20:41:22 yoshida ソース
Line 24: Line 24:
**ブザーを鳴らすからバーを開けるに変更 [#o54aa8b3] **ブザーを鳴らすからバーを開けるに変更 [#o54aa8b3]
DX_WriteByteDataを削除し、fd_DXSetPositionに変更します。~ DX_WriteByteDataを削除し、fd_DXSetPositionに変更します。~
-#ref(gcc_edit.png,100%)+#html{{ 
 +<pre class="brush:c"> 
 +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) { 
 +   DX_WriteByteData (100, 40, 10, 10, NULL); 
 +   DX_WriteByteData (100, 41, 10, 10, NULL); 
 +  } 
 +  fd_Wait (10); 
 +
 +</pre> 
 +}} 
 +#ref(down_arrow.png
 +#html{{ 
 +<pre class="brush:c"> 
 +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 () ) { 
 +  DX_ReadByteData (100, 27, &ReadData, 10, NULL); 
 +  fd_printf ("%3d\r", ReadData); 
 +  if (ReadData > 100) { 
 +   fd_DXSetPosition (1, 300); 
 +  } 
 +  fd_Wait (10)
 +
 +</pre> 
 +}}
[[fd_DXSetPosition>FDIIILIB#nbe84864]]は指定されたアクチュエータの位置を変更する関数です。~ [[fd_DXSetPosition>FDIIILIB#nbe84864]]は指定されたアクチュエータの位置を変更する関数です。~
Line 40: Line 73:
バーを閉じるにはバーを開く時の反対の条件が必要になります。~ バーを閉じるにはバーを開く時の反対の条件が必要になります。~
バーを開く時の条件がif (ReadData > 100)となっていますので、反対の条件はelseとなります。~ バーを開く時の条件がif (ReadData > 100)となっていますので、反対の条件はelseとなります。~
-#ref(gcc_edit_2.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 ()) { 
 +   DX_ReadByteData (100, 27, &ReadData, 10, NULL); 
 +   fd_printf ("%3d\r", ReadData); 
 +   if (ReadData > 100) { 
 +     fd_DXSetPosition (1, 300); 
 +   } else { 
 +     fd_DXSetPosition (1, 512); 
 +   } 
 +   fd_Wait (10)
 +  } 
 +
 +</pre> 
 +}}
バーを開く/閉じるはゴールポジションを変更するだけで、同じfd_DXSetPositionを使用します。 バーを開く/閉じるはゴールポジションを変更するだけで、同じfd_DXSetPositionを使用します。
**待ち時間を増やす [#u417c1fa] **待ち時間を増やす [#u417c1fa]
自動ドアは一旦開くとしばらく閉まりません。そのため、10msの停止を2000ms(2秒)の停止へ変更します。 自動ドアは一旦開くとしばらく閉まりません。そのため、10msの停止を2000ms(2秒)の停止へ変更します。
-#ref(gcc_edit_3.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 (!fd_rx_buff ()) { 
 +   DX_ReadByteData (100, 27, &ReadData, 10, NULL); 
 +   fd_printf ("%3d\r", ReadData); 
 +   if (ReadData > 100) { 
 +     fd_DXSetPosition (1, 300); 
 +   } else { 
 +     fd_DXSetPosition (1, 512); 
 +   } 
 +   fd_Wait (2000)
 +  } 
 +
 +</pre> 
 +}} 
**トルクリミットの設定 [#odb4282e] **トルクリミットの設定 [#odb4282e]
これで図に書いた一通りの処理のプログラムを書きましたので、書き込んで実行したいところですが、プログラムを一通り書いた後、初めてAX-12+を動かす時に注意する点があります。~ これで図に書いた一通りの処理のプログラムを書きましたので、書き込んで実行したいところですが、プログラムを一通り書いた後、初めてAX-12+を動かす時に注意する点があります。~
Line 53: Line 133:
そうならないようにテスト動作の際はAX-12+のトルクリミットを下げます。トルクリミットとはホーンを動かす力の最大値です。ホーンが回りにくい時、AX-12+は頑張ってホーンを回そうと力を入れます。その力を制限することで壊れることを防ぎます。それでもAX-12+に負担になりますので予期せぬ動きをした場合は、直ぐに電源を切るようにしましょう。 そうならないようにテスト動作の際はAX-12+のトルクリミットを下げます。トルクリミットとはホーンを動かす力の最大値です。ホーンが回りにくい時、AX-12+は頑張ってホーンを回そうと力を入れます。その力を制限することで壊れることを防ぎます。それでもAX-12+に負担になりますので予期せぬ動きをした場合は、直ぐに電源を切るようにしましょう。
 +#html{{
 +<pre class="brush:c">
 +#include <fd.h>
 +void main (void) {
 +  uint8_t ReadData;
-#ref(gcc_edit_4.png,100%)+  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 ()) {
 +   DX_ReadByteData (100, 27, &ReadData, 10, NULL);
 +   fd_printf ("%3d\r", ReadData);
 +   if (ReadData > 100) {
 +     fd_DXSetPosition (1, 300);
 +   } else {
 +     fd_DXSetPosition (1, 512);
 +   }
 +   fd_Wait (2000);
 +  }
 +}
 +</pre>
 +}}
[[fd_DXSetTorqueLimit>FDIIILIB#u4255df3]​]は指定されたアクチュエータのトルクを変更します。 [[fd_DXSetTorqueLimit>FDIIILIB#u4255df3]​]は指定されたアクチュエータのトルクを変更します。
''第1引数''は、DynamixelのIDです。AX-12+のIDは1です。~ ''第1引数''は、DynamixelのIDです。AX-12+のIDは1です。~
-''第2引数''は、トルクリミットを指定します。トルクリミットは0~1023まで設定することができます。ここでは154を指定していますので、約15%でトルクが制限されます。+''第2引数''は、トルクリミットを指定します。トルクリミットは0~1023まで設定することができます。ここでは154を指定していますので、約15%でトルクが制限されます。100%のトルクを得るには1023を指定します。 
 + 
 +トルク制限を行ってしまうと、必要なトルクが得られないこともあります。その場合は、一旦トルク制限を行い、徐々に制限値を上げていきましょう。
**動作確認 [#d91d40d3] **動作確認 [#d91d40d3]
Line 77: Line 181:
#ref(flow_2.png,100%) #ref(flow_2.png,100%)
プログラムに反映すると以下のようになります。 プログラムに反映すると以下のようになります。
-#ref(gcc_edit_5.png,100%) 
- 
-**再び動作確認 [#lc2b2cb7] 
#html{{ #html{{
<pre class="brush:c"> <pre class="brush:c">
Line 92: Line 193:
  fd_DXSetTorqueLimit (1, 154);   fd_DXSetTorqueLimit (1, 154);
-  while (!fd_rx_buff () && !fd_GetPB ()) {+  while (!fd_rx_buff ()) {
   DX_ReadByteData (100, 27, &ReadData, 10, NULL);    DX_ReadByteData (100, 27, &ReadData, 10, NULL);
   fd_printf ("%3d\r", ReadData);    fd_printf ("%3d\r", ReadData);
Line 106: Line 207:
</pre> </pre>
}} }}
 +
 +**再び動作確認 [#lc2b2cb7]
修正が完成しました。再びFDIII-HCにプログラムを書き込んで動かしてみましょう。~ 修正が完成しました。再びFDIII-HCにプログラムを書き込んで動かしてみましょう。~
如何でしょうか?~ 如何でしょうか?~


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