今までのジョイスティックの入力を段階分けしていた方式から、アナログ値をできる限りそのまま使用する方式に変更しました。

Dependencies:   mbed-rtos mbed

Fork of ControlMain2017 by albatross

Revision:
27:1af92a603532
Parent:
26:745735b0479d
Child:
28:056287cb001c
--- a/main.cpp	Tue Mar 21 10:34:08 2017 +0000
+++ b/main.cpp	Tue Mar 21 10:51:55 2017 +0000
@@ -7,10 +7,9 @@
 #define SEND_DATAS_CAN_ID 100
 #define SEND_DATAS_TIME 0.5
 #define THRESHOLD_OH_VALUE 0.14
-#define SUM_UP_NUM 20
 #define SAMPLE_INTERVAL 0.05
 
-#define PHASE_NUM 6 //偶数にしてください
+#define PHASE_NUM 7 //奇数にしてください
 #define SUM_UP_NUM 10.0
 /*
 roll入力とピッチ入力だとピッチの方が1.5倍効くように
@@ -133,7 +132,7 @@
             }
         }
         return value;
-    }
+    } else return value;
 }
 
 //範囲外に値がない場合にエラーが発生するので範囲内に収める
@@ -164,7 +163,7 @@
                 return i;
         }
     } else  if(value <= min)
-        return 0;
+        return 1;
     else if(value>=max)
         return PHASE_NUM;
 }
@@ -181,9 +180,10 @@
     float FormatedRoll_R = Format2Range((MatchedPitch +MatchedRoll ) / 2.0,(rollNeutral + rollUpperDiff+ pitchNeutral + pitchUpperDiff) / 2.0,(rollNeutral + rollLowerDiff+ pitchNeutral + pitchLowerDiff) / 2.0);
     *(int *)inputDatas_R =PhaseFloat(FormatedRoll_R,(rollNeutral + rollUpperDiff+ pitchNeutral + pitchUpperDiff) / 2.0,(rollNeutral + rollLowerDiff+ pitchNeutral + pitchLowerDiff) / 2.0);
 
-    float FormatedRoll_L = Format2Range((MatchedPitch - MatchedRoll) / 2.0,(pitchNeutral  +pitchLowerDiff - rollNeutral - rollUpperDiff) / 2.0,(pitchNeutral + pitchUpperDiff-rollNeutral - rollLowerDiff) / 2.0);
-    *(int *)inputDatas_L = PhaseFloat(FormatedRoll_L,(pitchNeutral + pitchLowerDiff - rollNeutral - rollUpperDiff) / 2.0,(pitchNeutral + pitchUpperDiff - rollNeutral - rollLowerDiff) / 2.0);
-    pc.printf("Format:%f    max:%f  min:%f\n\r",FormatedRoll_L,(pitchNeutral + pitchUpperDiff - rollNeutral - rollLowerDiff) / 2.0,(pitchNeutral + pitchLowerDiff - rollNeutral - rollUpperDiff) / 2.0);
+    float FormatedRoll_L = Format2Range((MatchedPitch - MatchedRoll) / 2.0,(pitchNeutral + pitchUpperDiff-rollNeutral - rollLowerDiff) / 2.0,(pitchNeutral  +pitchLowerDiff - rollNeutral - rollUpperDiff) / 2.0);
+    //pc.printf("matched:%f    max:%f  min:%f\n\r",(MatchedPitch - MatchedRoll) / 2.0,(pitchNeutral  +pitchLowerDiff - rollNeutral - rollUpperDiff) / 2.0,(pitchNeutral + pitchUpperDiff-rollNeutral - rollLowerDiff) / 2.0);
+    *(int *)inputDatas_L = PhaseFloat(FormatedRoll_L,(pitchNeutral + pitchUpperDiff - rollNeutral - rollLowerDiff) / 2.0,(pitchNeutral + pitchLowerDiff - rollNeutral - rollUpperDiff) / 2.0);
+    //pc.printf("Format:%f    max:%f  min:%f\n\r",FormatedRoll_L,(pitchNeutral + pitchUpperDiff - rollNeutral - rollLowerDiff) / 2.0,(pitchNeutral + pitchLowerDiff - rollNeutral - rollUpperDiff) / 2.0);
     if(*(int *)inputDatas_R < 0)
         *(int *)inputDatas_R = 0;
     else if(*(int *)inputDatas_R > PHASE_NUM * 2)
@@ -193,7 +193,7 @@
     else if(*(int *)inputDatas_L > PHASE_NUM*2)
         *(int *)inputDatas_L =PHASE_NUM * 2;
 
-    //  pc.printf("input_R:%d   input_L:%d\n\r",*(int *)inputDatas_R,*(int *)inputDatas_L);
+    pc.printf("input_R:%d   input_L:%d\n\r",*(int *)inputDatas_R,*(int *)inputDatas_L);
     inputDatas_R[4] = (char)drug_R;
     led4 =! led4;
     // pc.printf("%c",*(char *)inputDatas_R[4]);