ジャパンオープン用のメインプログラム

Dependencies:   mbed AQM1602 HMC6352 PID

Revision:
27:825c6835e3db
Parent:
25:a7460e23e02e
Child:
28:f246a5fbf6a5
--- a/main_processing/strategy_parts/input.cpp	Mon Mar 21 05:49:18 2016 +0000
+++ b/main_processing/strategy_parts/input.cpp	Mon Mar 21 17:05:08 2016 +0000
@@ -86,6 +86,124 @@
         }
     }
 }
+//line raw
+/*
+void LineRawCall_A(void){data.lnRawMemory[A_SPOT]=1;Line_timeout[A_SPOT].attach(&LineRawClear_A, LINE_DELAY);}
+void LineRawCall_B(void){data.lnRawMemory[B_SPOT]=1;Line_timeout[B_SPOT].attach(&LineRawClear_B, LINE_DELAY);}
+void LineRawCall_C(void){data.lnRawMemory[C_SPOT]=1;Line_timeout[C_SPOT].attach(&LineRawClear_C, LINE_DELAY);}
+void LineRawClear_A(void){if(Line[A_SPOT].read()==1){LineRawCall_A();}else{data.lnRawMemory[A_SPOT]=0;}}
+void LineRawClear_B(void){if(Line[B_SPOT].read()==1){LineRawCall_B();}else{data.lnRawMemory[B_SPOT]=0;}}
+void LineRawClear_C(void){if(Line[C_SPOT].read()==1){LineRawCall_C();}else{data.lnRawMemory[C_SPOT]=0;}}
+*/
+void LineRawCall_ALL(void){
+    if(data.lnRawReturn==1){
+        if(
+            (data.lnRawOrder[0]==A_SPOT)||
+            (data.lnRawOrder[0]==B_SPOT)||
+            (data.lnRawOrder[0]==C_SPOT)
+        ){
+            if(
+                (data.lnRawOrder[0]!=LINE_EMPTY)&&
+                (data.lnRawOrder[1]!=LINE_EMPTY)&&
+                ((Line[data.lnRawOrder[0]].read()==1)||(data.lnRawOrder[0]==data.lnRawLastRise))
+            ){
+                Line_reset.attach(&LineRawClear_ALL, LINE_DELAY_3);
+            }
+            else{
+                Line_reset.attach(&LineRawClear_ALL, LINE_DELAY_2);
+            }
+        }
+        else{
+            Line_reset.attach(&LineRawClear_ALL, LINE_DELAY_2);
+        }
+    }
+    else{
+        Line_reset.attach(&LineRawClear_ALL, LINE_DELAY_1);
+    }
+}
+void LineRawClear_ALL(void){
+    if(LineRaw>0){
+        LineRawCall_ALL();
+    }
+    else if(LineRaw==0){
+        LineRawRankClear();
+    }
+}
+void LineRawRankClear(void){
+    
+    data.lnRawOrderLog2[0]=data.lnRawOrderLog1[0];
+    data.lnRawOrderLog2[1]=data.lnRawOrderLog1[1];
+    data.lnRawOrderLog2[2]=data.lnRawOrderLog1[2];
+    
+    data.lnRawOrderLog1[0]=data.lnRawOrder[0];
+    data.lnRawOrderLog1[1]=data.lnRawOrder[1];
+    data.lnRawOrderLog1[2]=data.lnRawOrder[2];
+    
+    data.lnRawOrder[0]=LINE_EMPTY;
+    data.lnRawOrder[1]=LINE_EMPTY;
+    data.lnRawOrder[2]=LINE_EMPTY;
+    
+    data.lnRawRise[A_SPOT]=0;
+    data.lnRawRise[B_SPOT]=0;
+    data.lnRawRise[C_SPOT]=0;
+}
+void LineRawLogReset(void){
+    data.lnRawOrderLog2[0]=LINE_EMPTY;
+    data.lnRawOrderLog2[1]=LINE_EMPTY;
+    data.lnRawOrderLog2[2]=LINE_EMPTY;
+    
+    data.lnRawOrderLog1[0]=LINE_EMPTY;
+    data.lnRawOrderLog1[1]=LINE_EMPTY;
+    data.lnRawOrderLog1[2]=LINE_EMPTY;
+}
+void LineRawRanking_A(void){
+    data.lnRawLastRise=A_SPOT;
+    LineRawCall_ALL();
+    if(data.lnRawRise[A_SPOT]==1) return;
+    
+    if((data.lnRawOrder[0]==LINE_EMPTY)||(data.lnRawOrder[0]==A_SPOT)){
+        data.lnRawOrder[0]=A_SPOT;
+    }
+    else if((data.lnRawOrder[1]==LINE_EMPTY)||(data.lnRawOrder[1]==A_SPOT)){
+        data.lnRawOrder[1]=A_SPOT;
+    }
+    else if((data.lnRawOrder[2]==LINE_EMPTY)||(data.lnRawOrder[2]==A_SPOT)){
+        data.lnRawOrder[2]=A_SPOT;
+    }
+    data.lnRawRise[A_SPOT]=1;
+}
+void LineRawRanking_B(void){
+    data.lnRawLastRise=B_SPOT;
+    LineRawCall_ALL();
+    if(data.lnRawRise[B_SPOT]==1) return;
+    
+    if((data.lnRawOrder[0]==LINE_EMPTY)||(data.lnRawOrder[0]==B_SPOT)){
+        data.lnRawOrder[0]=B_SPOT;
+    }
+    else if((data.lnRawOrder[1]==LINE_EMPTY)||(data.lnRawOrder[1]==B_SPOT)){
+        data.lnRawOrder[1]=B_SPOT;
+    }
+    else if((data.lnRawOrder[2]==LINE_EMPTY)||(data.lnRawOrder[2]==B_SPOT)){
+        data.lnRawOrder[2]=B_SPOT;
+    }
+    data.lnRawRise[B_SPOT]=1;
+}
+void LineRawRanking_C(void){
+    data.lnRawLastRise=C_SPOT;
+    LineRawCall_ALL();
+    if(data.lnRawRise[C_SPOT]==1) return;
+    
+    if((data.lnRawOrder[0]==LINE_EMPTY)||(data.lnRawOrder[0]==C_SPOT)){
+        data.lnRawOrder[0]=C_SPOT;
+    }
+    else if((data.lnRawOrder[1]==LINE_EMPTY)||(data.lnRawOrder[1]==C_SPOT)){
+        data.lnRawOrder[1]=C_SPOT;
+    }
+    else if((data.lnRawOrder[2]==LINE_EMPTY)||(data.lnRawOrder[2]==C_SPOT)){
+        data.lnRawOrder[2]=C_SPOT;
+    }
+    data.lnRawRise[C_SPOT]=1;
+}
 //ball
 uint8_t ReadBall(void){//1or0
     return (BallCheckerA.read_u16()<40000); 
@@ -191,11 +309,11 @@
     
     
     if(data.irValPhase[IR_SHORT]>=DIS_7){
-        if(data.irValPhase[IR_LONG]>=DIS_5){
+        if(data.irValPhase[IR_LONG]>=DIS_7){
             data.irNotice=IR_NONE;
         }
         else{
-            if(data.irDif[IR_LONG]<=DIS_6){
+            if(data.irDif[IR_LONG]<=DIS_0){
                 data.irNotice=IR_NONE;
             }
             else{