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

Dependencies:   mbed-rtos mbed

Fork of ControlMain2017 by albatross

Revision:
28:056287cb001c
Parent:
27:1af92a603532
Child:
29:8bff47ab602d
--- a/main.cpp	Tue Mar 21 10:51:55 2017 +0000
+++ b/main.cpp	Tue Mar 21 17:53:31 2017 +0000
@@ -9,7 +9,7 @@
 #define THRESHOLD_OH_VALUE 0.14
 #define SAMPLE_INTERVAL 0.05
 
-#define PHASE_NUM 7 //奇数にしてください
+#define PHASE_NUM 12 //奇数にしてください
 #define SUM_UP_NUM 10.0
 /*
 roll入力とピッチ入力だとピッチの方が1.5倍効くように
@@ -88,14 +88,12 @@
             pitchUpperDiff = value - pitchNeutral;
         else if(value < rollNeutral + pitchLowerDiff)
             pitchLowerDiff = value - pitchNeutral;
-        led1 =!led1;
         return;
     } else if(it == enumRoll) {
         if(value >rollNeutral + rollUpperDiff)
             rollUpperDiff = value - rollNeutral;
         else if(value < rollNeutral + rollLowerDiff)
             rollLowerDiff = value  -rollNeutral ;
-        led2 =! led2;
         return;
     }
 }
@@ -184,14 +182,14 @@
     //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)
-        *(int *)inputDatas_R   = PHASE_NUM *2;
-    if(*(int *)inputDatas_L < 0)
-        *(int *)inputDatas_L = 0 ;
-    else if(*(int *)inputDatas_L > PHASE_NUM*2)
-        *(int *)inputDatas_L =PHASE_NUM * 2;
+    if(*(int *)inputDatas_R < 1)
+        *(int *)inputDatas_R = 1;
+    else if(*(int *)inputDatas_R > PHASE_NUM)
+        *(int *)inputDatas_R   = PHASE_NUM;
+    if(*(int *)inputDatas_L < 1)
+        *(int *)inputDatas_L = 1 ;
+    else if(*(int *)inputDatas_L > PHASE_NUM)
+        *(int *)inputDatas_L =PHASE_NUM;
 
     pc.printf("input_R:%d   input_L:%d\n\r",*(int *)inputDatas_R,*(int *)inputDatas_L);
     inputDatas_R[4] = (char)drug_R;