ページへ戻る

− Links

 印刷 

FDIII-HC Starter Kit Guide​/Chapter10.4 の変更点 :: Besttechnology

knowledge:FDIII-HC Starter Kit Guide/Chapter10.4 の変更点

« Prev[3]  
14: 2013-08-07 (水) 18:39:00 yoshida[4] ソース[5] 現: 2013-08-07 (水) 20:15:33 yoshida[4] ソース[6]
Line 27: Line 27:
#ref(triangle3D.png) #ref(triangle3D.png)
指令値を出すため、もう一つ三角形を作ります。D2からZ軸に沿ってposの位置まで移動した点をjとし、D2、j、posを頂点とした直角三角形を作成します。D2の指令角度はこの三角形のD2の角度から先ほど求めたD2の角度を差し引きした角度になります。~ 指令値を出すため、もう一つ三角形を作ります。D2からZ軸に沿ってposの位置まで移動した点をjとし、D2、j、posを頂点とした直角三角形を作成します。D2の指令角度はこの三角形のD2の角度から先ほど求めたD2の角度を差し引きした角度になります。~
 +但し、D2とD3のAX-12+は逆向きに結合しているので、位置を指定する際には注意が必要です。~
最後にD1の角度をアークタンジェントで求めれば角度計算は終了です。 最後にD1の角度をアークタンジェントで求めれば角度計算は終了です。
Line 36: Line 37:
#include <math.h> #include <math.h>
#include <fd.h> #include <fd.h>
-double pos[3] = { 80.0, 0, 50.0 };  // 座標(x, y, z) +double pos[3] = { 70.0, 70.0, 130.0 };  // 座標(x, y, z) 
-const int L[4] = { 42, 27, 68, 40 };  // 軸間の長さ+const int L[4] = { 42, 27, 83, 55 };  // 軸間の長さ
// RadianからDegreeへ変換 // RadianからDegreeへ変換
Line 46: Line 47:
uint16_t Position (double rad) { uint16_t Position (double rad) {
  return 512 + Degree(rad) * 3.41;   return 512 + Degree(rad) * 3.41;
 +}
 +uint16_t Position2 (double rad) {
 +  return 512 - Degree(rad) * 3.41;
} }
Line 70: Line 74:
  fd_DXSetPosition (1, Position(radD1));   fd_DXSetPosition (1, Position(radD1));
  fd_DXSetPosition (2, Position(radD2));   fd_DXSetPosition (2, Position(radD2));
-  fd_DXSetPosition (3, Position(radD3));+  fd_DXSetPosition (3, Position2(radD3));
} }
</pre> </pre>
« Prev[3]