Main Program

Dependencies:   mbed AQM1602 HMC6352 PID

Revision:
40:f68474b1d5e7
Parent:
38:a7eb15b1f813
Child:
41:3cdcdec9c885
--- a/main_processing/strategy/strategy.cpp	Wed Feb 03 12:11:01 2016 +0000
+++ b/main_processing/strategy/strategy.cpp	Thu Feb 04 07:12:34 2016 +0000
@@ -66,6 +66,42 @@
 void LineReverse(void){
     LineReverseFlag=0;
 }
+uint8_t LineSign[3];
+uint8_t LineFirst[2];
+void LineClear_A(void){LineSign[A_SPOT] = 0;}
+void LineClear_B(void){LineSign[B_SPOT] = 0;}
+void LineClear_C(void){LineSign[C_SPOT] = 0;}
+void LineCall_A(void){
+    LineSign[A_SPOT] = 1;
+    if(LineSign[B_SPOT]==0){
+        LineFirst[X_AXIS] = A_SPOT;
+    }
+    if((LineSign[A_SPOT]==1)&&(LineSign[B_SPOT]==1)){
+        if(LineSign[C_SPOT]==0){
+            LineFirst[Y_AXIS] = AB_SPOT;
+        }
+    }
+    Line_timeout[A_SPOT].attach(&LineClear_A, 0.5);
+}
+void LineCall_B(void){
+    LineSign[B_SPOT] = 1;
+    if(LineSign[A_SPOT]==0){
+        LineFirst[X_AXIS] = B_SPOT;
+    }
+    if((LineSign[A_SPOT]==1)&&(LineSign[B_SPOT]==1)){
+        if(LineSign[C_SPOT]==0){
+            LineFirst[Y_AXIS] = AB_SPOT;
+        }
+    }
+    Line_timeout[B_SPOT].attach(&LineClear_B, 0.5);
+}
+void LineCall_C(void){
+    LineSign[C_SPOT] = 1;
+    if(!((LineSign[A_SPOT]==1)&&(LineSign[B_SPOT]==1))){
+        LineFirst[Y_AXIS] = C_SPOT;
+    }
+    Line_timeout[C_SPOT].attach(&LineClear_C, 0.5);
+}
 void modeAttack1(void){
     double ir_x, ir_y;
     int vx,vy,vs;
@@ -80,6 +116,11 @@
         LineBind[2]=0;
         LineBind[3]=0;
         LineReverseFlag=0;
+        
+        LineSign[A_SPOT]=0;
+        LineSign[B_SPOT]=0;
+        LineSign[C_SPOT]=0;
+        
         data.KickOffFlag=0;
     }
     if(data.IrFlag==1){
@@ -154,6 +195,11 @@
         if(RawLineSignal>0){
             vx=(LINE_RF*2)*((-1)*IrRange[A_SPOT] +      IrRange[B_SPOT]);
             vy=(LINE_RF*2)*(     IrRange[C_SPOT] + (-1)*IrRange[AB_SPOT]);
+            /*vx=(LINE_RF*2)*((-1)*(LineFirst[X_AXIS] == A_SPOT) +      (LineFirst[X_AXIS] == B_SPOT));
+            vy=(LINE_RF*2)*(     (LineFirst[Y_AXIS] == C_SPOT) + (-1)*(LineFirst[Y_AXIS] == AB_SPOT));
+            Line_timeout[A_SPOT].attach(&LineClear_A, 0.5);
+            Line_timeout[B_SPOT].attach(&LineClear_B, 0.5);
+            Line_timeout[C_SPOT].attach(&LineClear_C, 0.5);*/
         }
         else{
             vx=0;