ジャパンオープン用のメインプログラム
Dependencies: mbed AQM1602 HMC6352 PID
Diff: main_processing/strategy_parts/input.cpp
- 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{