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

Dependencies:   mbed-rtos mbed

Fork of ControlMain2017 by albatross

Branch:
?????
Revision:
46:53eb2ba661c5
Parent:
45:df3b45a8cecc
Child:
47:6f84dcf7d1d8
--- a/ValueProcessor.cpp	Sat Apr 29 04:13:17 2017 +0000
+++ b/ValueProcessor.cpp	Sat May 13 07:31:38 2017 +0000
@@ -19,15 +19,14 @@
 int ValueProcess::WidenNeutral(int phased)
 {
     int AddNeutral = ADDITIONALPHASE / 2;
-    int neutralPhase = (PHASE_NUM + ADDITIONALPHASE +1)/2.0;
-    if(neutralPhase - AddNeutral<=phased && phased <= neutralPhase +AddNeutral)
-        phased = neutralPhase;
-    else if(phased < neutralPhase - AddNeutral)
-        phased += AddNeutral;
-    else if(neutralPhase +AddNeutral<phased)
-        phased -= AddNeutral;
+    int neutralPhase = (int)((PHASE_NUM + ADDITIONALPHASE+1) / 2.0);
+    int Np = (int)((PHASE_NUM + ADDITIONALPHASE ) / 2.0);
+    if (neutralPhase - AddNeutral <= phased && phased <= neutralPhase + AddNeutral)
+        phased = neutralPhase - AddNeutral;
+    else if (neutralPhase + AddNeutral < phased)
+        phased -= ADDITIONALPHASE;
 
-    return phased - AddNeutral;
+    return phased;
 }
 
 void ValueProcess::setMaxAndMin(InputType it,float value)
@@ -118,7 +117,7 @@
     float PhaseWidth = (max - min) / tempPhase;
     if(value< max&& value > min) {
         for(int i = 1; i <= tempPhase; i++) {
-            if(value < min + PhaseWidth * i&& value > min + PhaseWidth * (i - 1) )
+            if(value <= min + PhaseWidth * i&& value > min + PhaseWidth * (i - 1) )
                 return i;
         }
     } else  if(value <= min)
@@ -170,7 +169,7 @@
     *input_R = phased_R;
     float Formated_L = Format2Range(SetRollPitchRacio(MatchedPitch, - MatchedRoll),SetRollPitchRacio(pitchNeutral + pitchUpperDiff,-rollNeutral - rollLowerDiff),SetRollPitchRacio(pitchNeutral  +pitchLowerDiff, - rollNeutral - rollUpperDiff));
     int phased_L = PhaseFloat(Formated_L,SetRollPitchRacio(pitchNeutral + pitchUpperDiff ,- rollNeutral - rollLowerDiff),SetRollPitchRacio(pitchNeutral + pitchLowerDiff ,- rollNeutral - rollUpperDiff));
-    *input_L = WidenNeutral(phased_L);
+    *input_L = WidenNeutral(phased_R);
 
     if(*input_R < 1)
         *input_R = 1;