![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Main Program
Dependencies: mbed AQM1602 HMC6352 PID
Diff: main_processing/strategy/strategy.cpp
- Revision:
- 40:f68474b1d5e7
- Parent:
- 38:a7eb15b1f813
- Child:
- 41:3cdcdec9c885
diff -r 30d556b8b5a0 -r f68474b1d5e7 main_processing/strategy/strategy.cpp --- 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;