ジャパンオープン用のメインプログラム
Dependencies: mbed AQM1602 HMC6352 PID
main_processing/strategy/strategy.cpp@19:967207de919d, 2016-03-16 (annotated)
- Committer:
- lilac0112_1
- Date:
- Wed Mar 16 02:58:31 2016 +0000
- Revision:
- 19:967207de919d
- Parent:
- 18:3a42a931c95a
- Child:
- 20:d69ce8f47f1d
TICK DecLine
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lilac0112_1 | 0:ea35c18c85fc | 1 | #include "mbed.h" |
lilac0112_1 | 0:ea35c18c85fc | 2 | #include "extern.h" |
lilac0112_1 | 0:ea35c18c85fc | 3 | |
lilac0112_1 | 0:ea35c18c85fc | 4 | //Atk |
lilac0112_1 | 18:3a42a931c95a | 5 | |
lilac0112_1 | 14:b510adcb6065 | 6 | void LineJudgeSlow(double pow_x, double pow_y, double *x, double *y){ |
lilac0112_1 | 11:3efae754e6ef | 7 | uint8_t LineState; |
lilac0112_1 | 16:4fadb7a87497 | 8 | uint8_t LineSum; |
lilac0112_1 | 11:3efae754e6ef | 9 | |
lilac0112_1 | 11:3efae754e6ef | 10 | //line |
lilac0112_1 | 11:3efae754e6ef | 11 | LineState = 0; |
lilac0112_1 | 16:4fadb7a87497 | 12 | |
lilac0112_1 | 16:4fadb7a87497 | 13 | LineSum = ((data.lnHold>>2)&0x1)+((data.lnHold>>1)&0x1)+((data.lnHold>>0)&0x1); |
lilac0112_1 | 16:4fadb7a87497 | 14 | if((LineSum==3)||(data.FieldSpot==LINE_OUTSIDE)){ |
lilac0112_1 | 16:4fadb7a87497 | 15 | LineState = 3; |
lilac0112_1 | 16:4fadb7a87497 | 16 | } |
lilac0112_1 | 16:4fadb7a87497 | 17 | else if(LineSum==2){ |
lilac0112_1 | 16:4fadb7a87497 | 18 | LineState = 2; |
lilac0112_1 | 16:4fadb7a87497 | 19 | } |
lilac0112_1 | 16:4fadb7a87497 | 20 | else if(LineSum==1){ |
lilac0112_1 | 16:4fadb7a87497 | 21 | LineState = 1; |
lilac0112_1 | 16:4fadb7a87497 | 22 | } |
lilac0112_1 | 16:4fadb7a87497 | 23 | else if(LineSum==0){ |
lilac0112_1 | 16:4fadb7a87497 | 24 | LineState = 0; |
lilac0112_1 | 16:4fadb7a87497 | 25 | } |
lilac0112_1 | 13:b20921316f3c | 26 | |
lilac0112_1 | 11:3efae754e6ef | 27 | |
lilac0112_1 | 14:b510adcb6065 | 28 | if(pow_x>=0){ |
lilac0112_1 | 11:3efae754e6ef | 29 | if(data.ping[R_PING]<WhiteToWall[X_PING]) (*x)=LineDecline[LineState]; |
lilac0112_1 | 11:3efae754e6ef | 30 | else *x=1; |
lilac0112_1 | 11:3efae754e6ef | 31 | } |
lilac0112_1 | 11:3efae754e6ef | 32 | else{ |
lilac0112_1 | 11:3efae754e6ef | 33 | if(data.ping[L_PING]<WhiteToWall[X_PING]) (*x)=LineDecline[LineState]; |
lilac0112_1 | 11:3efae754e6ef | 34 | else *x=1; |
lilac0112_1 | 11:3efae754e6ef | 35 | } |
lilac0112_1 | 11:3efae754e6ef | 36 | |
lilac0112_1 | 14:b510adcb6065 | 37 | if(pow_y>=0){ |
lilac0112_1 | 11:3efae754e6ef | 38 | if(data.ping[F_PING]<WhiteToWall[Y_PING]) (*y)=LineDecline[LineState]; |
lilac0112_1 | 11:3efae754e6ef | 39 | else *y=1; |
lilac0112_1 | 11:3efae754e6ef | 40 | } |
lilac0112_1 | 11:3efae754e6ef | 41 | else{ |
lilac0112_1 | 11:3efae754e6ef | 42 | if(data.ping[B_PING]<WhiteToWall[Y_PING]) (*y)=LineDecline[LineState]; |
lilac0112_1 | 11:3efae754e6ef | 43 | else *y=1; |
lilac0112_1 | 11:3efae754e6ef | 44 | } |
lilac0112_1 | 11:3efae754e6ef | 45 | } |
lilac0112_1 | 13:b20921316f3c | 46 | void LineJudgeReturn(double pow_x, double pow_y, double *x, double *y){ |
lilac0112_1 | 17:cc862ecf9812 | 47 | const int8_t static LineReturn[5] = {0, 0, 0, 0, 20}; |
lilac0112_1 | 12:bee8f883c33a | 48 | uint8_t LinePingState[4]; |
lilac0112_1 | 12:bee8f883c33a | 49 | //◎ボールを追う力とラインから離れる力の向きが違うならばラインから離れる力が優先される. |
lilac0112_1 | 12:bee8f883c33a | 50 | //◎ボールを追う力とラインから離れる力の向きが同じならばボールを追う力が優先される. |
lilac0112_1 | 12:bee8f883c33a | 51 | //◎ラインセンサ全てが場外になるまではボールを追う力は作用しない.ボールを追う力は場内に出るまで作用する. |
lilac0112_1 | 12:bee8f883c33a | 52 | //×ラインのほぼ場外では常時ラインから離れる力が優先される. |
lilac0112_1 | 12:bee8f883c33a | 53 | //※場外判定を行うには再び場内に戻る必要がある. |
lilac0112_1 | 12:bee8f883c33a | 54 | |
lilac0112_1 | 17:cc862ecf9812 | 55 | if(data.FieldSpot==LINE_OUTSIDE){ |
lilac0112_1 | 12:bee8f883c33a | 56 | |
lilac0112_1 | 12:bee8f883c33a | 57 | LinePingState[L_PING]=(data.ping[L_PING]<WhiteToWall[X_PING]); |
lilac0112_1 | 12:bee8f883c33a | 58 | LinePingState[R_PING]=(data.ping[R_PING]<WhiteToWall[X_PING]); |
lilac0112_1 | 12:bee8f883c33a | 59 | LinePingState[F_PING]=(data.ping[F_PING]<WhiteToWall[Y_PING]); |
lilac0112_1 | 12:bee8f883c33a | 60 | LinePingState[B_PING]=(data.ping[B_PING]<WhiteToWall[Y_PING]); |
lilac0112_1 | 12:bee8f883c33a | 61 | |
lilac0112_1 | 12:bee8f883c33a | 62 | //line間際の復帰力以外の力を作用させるか否か |
lilac0112_1 | 12:bee8f883c33a | 63 | data.lnStop[X_LINE]=1; |
lilac0112_1 | 12:bee8f883c33a | 64 | data.lnStop[Y_LINE]=1; |
lilac0112_1 | 17:cc862ecf9812 | 65 | |
lilac0112_1 | 17:cc862ecf9812 | 66 | data.ReturnDir[X_LINE]=LINE_EMPTY; |
lilac0112_1 | 17:cc862ecf9812 | 67 | data.ReturnDir[Y_LINE]=LINE_EMPTY; |
lilac0112_1 | 17:cc862ecf9812 | 68 | |
lilac0112_1 | 12:bee8f883c33a | 69 | //x |
lilac0112_1 | 17:cc862ecf9812 | 70 | if(data.ReturnDir[X_LINE]==L_LINE){ |
lilac0112_1 | 13:b20921316f3c | 71 | if(pow_x<0){ |
lilac0112_1 | 13:b20921316f3c | 72 | *x = 0; |
lilac0112_1 | 13:b20921316f3c | 73 | data.lnStop[X_LINE]=1; |
lilac0112_1 | 13:b20921316f3c | 74 | } |
lilac0112_1 | 13:b20921316f3c | 75 | else{ |
lilac0112_1 | 13:b20921316f3c | 76 | *x = -LineReturn[4]; |
lilac0112_1 | 13:b20921316f3c | 77 | data.lnStop[X_LINE]=0; |
lilac0112_1 | 13:b20921316f3c | 78 | } |
lilac0112_1 | 12:bee8f883c33a | 79 | } |
lilac0112_1 | 17:cc862ecf9812 | 80 | else if(data.ReturnDir[X_LINE]==R_LINE){ |
lilac0112_1 | 13:b20921316f3c | 81 | if(pow_x>0){ |
lilac0112_1 | 13:b20921316f3c | 82 | *x = 0; |
lilac0112_1 | 13:b20921316f3c | 83 | data.lnStop[X_LINE]=1; |
lilac0112_1 | 13:b20921316f3c | 84 | } |
lilac0112_1 | 13:b20921316f3c | 85 | else{ |
lilac0112_1 | 13:b20921316f3c | 86 | *x = LineReturn[4]; |
lilac0112_1 | 13:b20921316f3c | 87 | data.lnStop[X_LINE]=0; |
lilac0112_1 | 13:b20921316f3c | 88 | } |
lilac0112_1 | 12:bee8f883c33a | 89 | } |
lilac0112_1 | 17:cc862ecf9812 | 90 | else if(data.ReturnDir[X_LINE]==LINE_EMPTY){ |
lilac0112_1 | 17:cc862ecf9812 | 91 | if((LinePingState[L_PING]==0)&&(LinePingState[R_PING]==0)){ |
lilac0112_1 | 17:cc862ecf9812 | 92 | /*if(pow_x>0){ |
lilac0112_1 | 17:cc862ecf9812 | 93 | *x = -pow_x*(1-0.75); |
lilac0112_1 | 17:cc862ecf9812 | 94 | } |
lilac0112_1 | 17:cc862ecf9812 | 95 | else{ |
lilac0112_1 | 17:cc862ecf9812 | 96 | *x = pow_x*(1-0.75); |
lilac0112_1 | 17:cc862ecf9812 | 97 | }*/ |
lilac0112_1 | 17:cc862ecf9812 | 98 | data.lnStop[X_LINE]=1; |
lilac0112_1 | 17:cc862ecf9812 | 99 | } |
lilac0112_1 | 17:cc862ecf9812 | 100 | if((LinePingState[L_PING]==0)&&(LinePingState[R_PING]==1)){ |
lilac0112_1 | 17:cc862ecf9812 | 101 | |
lilac0112_1 | 17:cc862ecf9812 | 102 | data.ReturnDir[X_LINE]=L_LINE; |
lilac0112_1 | 17:cc862ecf9812 | 103 | |
lilac0112_1 | 18:3a42a931c95a | 104 | /*if(pow_x<0){ |
lilac0112_1 | 17:cc862ecf9812 | 105 | *x = 0; |
lilac0112_1 | 17:cc862ecf9812 | 106 | data.lnStop[X_LINE]=1; |
lilac0112_1 | 17:cc862ecf9812 | 107 | } |
lilac0112_1 | 17:cc862ecf9812 | 108 | else{ |
lilac0112_1 | 17:cc862ecf9812 | 109 | *x = -LineReturn[4]; |
lilac0112_1 | 17:cc862ecf9812 | 110 | data.lnStop[X_LINE]=0; |
lilac0112_1 | 18:3a42a931c95a | 111 | }*/ |
lilac0112_1 | 18:3a42a931c95a | 112 | *x = -LineReturn[4]; |
lilac0112_1 | 18:3a42a931c95a | 113 | data.lnStop[X_LINE]=0; |
lilac0112_1 | 17:cc862ecf9812 | 114 | } |
lilac0112_1 | 17:cc862ecf9812 | 115 | if((LinePingState[L_PING]==1)&&(LinePingState[R_PING]==0)){ |
lilac0112_1 | 17:cc862ecf9812 | 116 | |
lilac0112_1 | 17:cc862ecf9812 | 117 | data.ReturnDir[X_LINE]=R_LINE; |
lilac0112_1 | 17:cc862ecf9812 | 118 | |
lilac0112_1 | 18:3a42a931c95a | 119 | /*if(pow_x>0){ |
lilac0112_1 | 17:cc862ecf9812 | 120 | *x = 0; |
lilac0112_1 | 17:cc862ecf9812 | 121 | data.lnStop[X_LINE]=1; |
lilac0112_1 | 17:cc862ecf9812 | 122 | } |
lilac0112_1 | 17:cc862ecf9812 | 123 | else{ |
lilac0112_1 | 17:cc862ecf9812 | 124 | *x = LineReturn[4]; |
lilac0112_1 | 17:cc862ecf9812 | 125 | data.lnStop[X_LINE]=0; |
lilac0112_1 | 18:3a42a931c95a | 126 | }*/ |
lilac0112_1 | 18:3a42a931c95a | 127 | *x = LineReturn[4]; |
lilac0112_1 | 18:3a42a931c95a | 128 | data.lnStop[X_LINE]=0; |
lilac0112_1 | 17:cc862ecf9812 | 129 | } |
lilac0112_1 | 17:cc862ecf9812 | 130 | if((LinePingState[L_PING]==1)&&(LinePingState[R_PING]==1)){ |
lilac0112_1 | 17:cc862ecf9812 | 131 | *x = 0; |
lilac0112_1 | 17:cc862ecf9812 | 132 | data.lnStop[X_LINE]=0; |
lilac0112_1 | 17:cc862ecf9812 | 133 | } |
lilac0112_1 | 12:bee8f883c33a | 134 | } |
lilac0112_1 | 12:bee8f883c33a | 135 | //y |
lilac0112_1 | 17:cc862ecf9812 | 136 | if(data.ReturnDir[Y_LINE]==F_LINE){ |
lilac0112_1 | 13:b20921316f3c | 137 | if(pow_y>0){ |
lilac0112_1 | 17:cc862ecf9812 | 138 | *y = 0; |
lilac0112_1 | 17:cc862ecf9812 | 139 | data.lnStop[Y_LINE]=1; |
lilac0112_1 | 13:b20921316f3c | 140 | } |
lilac0112_1 | 13:b20921316f3c | 141 | else{ |
lilac0112_1 | 17:cc862ecf9812 | 142 | *y = LineReturn[4]; |
lilac0112_1 | 17:cc862ecf9812 | 143 | data.lnStop[Y_LINE]=0; |
lilac0112_1 | 13:b20921316f3c | 144 | } |
lilac0112_1 | 12:bee8f883c33a | 145 | } |
lilac0112_1 | 17:cc862ecf9812 | 146 | else if(data.ReturnDir[Y_LINE]==B_LINE){ |
lilac0112_1 | 13:b20921316f3c | 147 | if(pow_y<0){ |
lilac0112_1 | 13:b20921316f3c | 148 | *y = 0; |
lilac0112_1 | 13:b20921316f3c | 149 | data.lnStop[Y_LINE]=1; |
lilac0112_1 | 13:b20921316f3c | 150 | } |
lilac0112_1 | 13:b20921316f3c | 151 | else{ |
lilac0112_1 | 13:b20921316f3c | 152 | *y = -LineReturn[4]; |
lilac0112_1 | 13:b20921316f3c | 153 | data.lnStop[Y_LINE]=0; |
lilac0112_1 | 13:b20921316f3c | 154 | } |
lilac0112_1 | 12:bee8f883c33a | 155 | } |
lilac0112_1 | 17:cc862ecf9812 | 156 | else if(data.ReturnDir[Y_LINE]==LINE_EMPTY){ |
lilac0112_1 | 17:cc862ecf9812 | 157 | if((LinePingState[B_PING]==0)&&(LinePingState[F_PING]==0)){ |
lilac0112_1 | 17:cc862ecf9812 | 158 | /*if(pow_y>0){ |
lilac0112_1 | 17:cc862ecf9812 | 159 | *y = -pow_y*(1-0.75); |
lilac0112_1 | 17:cc862ecf9812 | 160 | } |
lilac0112_1 | 17:cc862ecf9812 | 161 | else{ |
lilac0112_1 | 17:cc862ecf9812 | 162 | *y = pow_y*(1-0.75); |
lilac0112_1 | 17:cc862ecf9812 | 163 | }*/ |
lilac0112_1 | 17:cc862ecf9812 | 164 | data.lnStop[Y_LINE]=1; |
lilac0112_1 | 13:b20921316f3c | 165 | } |
lilac0112_1 | 17:cc862ecf9812 | 166 | if((LinePingState[B_PING]==0)&&(LinePingState[F_PING]==1)){ |
lilac0112_1 | 17:cc862ecf9812 | 167 | |
lilac0112_1 | 17:cc862ecf9812 | 168 | data.ReturnDir[Y_LINE]=B_LINE; |
lilac0112_1 | 17:cc862ecf9812 | 169 | |
lilac0112_1 | 17:cc862ecf9812 | 170 | if(pow_y<0){ |
lilac0112_1 | 17:cc862ecf9812 | 171 | *y = 0; |
lilac0112_1 | 17:cc862ecf9812 | 172 | data.lnStop[Y_LINE]=1; |
lilac0112_1 | 17:cc862ecf9812 | 173 | } |
lilac0112_1 | 17:cc862ecf9812 | 174 | else{ |
lilac0112_1 | 17:cc862ecf9812 | 175 | *y = -LineReturn[4]; |
lilac0112_1 | 17:cc862ecf9812 | 176 | data.lnStop[Y_LINE]=0; |
lilac0112_1 | 17:cc862ecf9812 | 177 | } |
lilac0112_1 | 17:cc862ecf9812 | 178 | } |
lilac0112_1 | 17:cc862ecf9812 | 179 | if((LinePingState[B_PING]==1)&&(LinePingState[F_PING]==0)){ |
lilac0112_1 | 17:cc862ecf9812 | 180 | |
lilac0112_1 | 17:cc862ecf9812 | 181 | data.ReturnDir[Y_LINE]=F_LINE; |
lilac0112_1 | 17:cc862ecf9812 | 182 | |
lilac0112_1 | 17:cc862ecf9812 | 183 | if(pow_y>0){ |
lilac0112_1 | 17:cc862ecf9812 | 184 | *y = 0; |
lilac0112_1 | 17:cc862ecf9812 | 185 | data.lnStop[Y_LINE]=1; |
lilac0112_1 | 17:cc862ecf9812 | 186 | } |
lilac0112_1 | 17:cc862ecf9812 | 187 | else{ |
lilac0112_1 | 17:cc862ecf9812 | 188 | *y = LineReturn[4]; |
lilac0112_1 | 17:cc862ecf9812 | 189 | data.lnStop[Y_LINE]=0; |
lilac0112_1 | 17:cc862ecf9812 | 190 | } |
lilac0112_1 | 17:cc862ecf9812 | 191 | } |
lilac0112_1 | 17:cc862ecf9812 | 192 | if((LinePingState[B_PING]==1)&&(LinePingState[F_PING]==1)){ |
lilac0112_1 | 17:cc862ecf9812 | 193 | *y = 0; |
lilac0112_1 | 17:cc862ecf9812 | 194 | data.lnStop[Y_LINE]=0; |
lilac0112_1 | 13:b20921316f3c | 195 | } |
lilac0112_1 | 12:bee8f883c33a | 196 | } |
lilac0112_1 | 17:cc862ecf9812 | 197 | //none |
lilac0112_1 | 17:cc862ecf9812 | 198 | if((LinePingState[L_PING]==1)&&(LinePingState[R_PING]==1)&&(LinePingState[F_PING]==1)&&(LinePingState[B_PING]==1)){ |
lilac0112_1 | 17:cc862ecf9812 | 199 | //turn! |
lilac0112_1 | 12:bee8f883c33a | 200 | } |
lilac0112_1 | 13:b20921316f3c | 201 | |
lilac0112_1 | 17:cc862ecf9812 | 202 | } |
lilac0112_1 | 17:cc862ecf9812 | 203 | else{//data.FieldSpot==LINE_INSIDE |
lilac0112_1 | 17:cc862ecf9812 | 204 | |
lilac0112_1 | 17:cc862ecf9812 | 205 | data.ReturnDir[X_LINE]=LINE_EMPTY; |
lilac0112_1 | 17:cc862ecf9812 | 206 | data.ReturnDir[Y_LINE]=LINE_EMPTY; |
lilac0112_1 | 13:b20921316f3c | 207 | |
lilac0112_1 | 12:bee8f883c33a | 208 | *x = 0; |
lilac0112_1 | 12:bee8f883c33a | 209 | *y = 0; |
lilac0112_1 | 12:bee8f883c33a | 210 | |
lilac0112_1 | 12:bee8f883c33a | 211 | //line間際の復帰力以外の力を作用させるか否か |
lilac0112_1 | 12:bee8f883c33a | 212 | data.lnStop[X_LINE]=1; |
lilac0112_1 | 12:bee8f883c33a | 213 | data.lnStop[Y_LINE]=1; |
lilac0112_1 | 12:bee8f883c33a | 214 | } |
lilac0112_1 | 12:bee8f883c33a | 215 | } |
lilac0112_1 | 18:3a42a931c95a | 216 | void LineJudgeReset(double pow_x, double pow_y, double *x, double *y){ |
lilac0112_1 | 18:3a42a931c95a | 217 | //static uint8_t NewLineCorner[4]={LINE_EMPTY, LINE_EMPTY, LINE_EMPTY, LINE_EMPTY}; |
lilac0112_1 | 18:3a42a931c95a | 218 | //static uint8_t LastLineCorner[4]={LINE_EMPTY, LINE_EMPTY, LINE_EMPTY, LINE_EMPTY}; |
lilac0112_1 | 18:3a42a931c95a | 219 | |
lilac0112_1 | 18:3a42a931c95a | 220 | if((/*data.lnRaw==0*/1)&&(data.lnHold==7)){ |
lilac0112_1 | 16:4fadb7a87497 | 221 | if(data.FieldSpot==LINE_INSIDE){ |
lilac0112_1 | 18:3a42a931c95a | 222 | |
lilac0112_1 | 14:b510adcb6065 | 223 | data.lnCorner[L_LINE] = (data.ping[L_PING]<OutToWall[X_PING]); |
lilac0112_1 | 14:b510adcb6065 | 224 | data.lnCorner[R_LINE] = (data.ping[R_PING]<OutToWall[X_PING]); |
lilac0112_1 | 14:b510adcb6065 | 225 | data.lnCorner[F_LINE] = (data.ping[F_PING]<OutToWall[Y_PING]); |
lilac0112_1 | 14:b510adcb6065 | 226 | data.lnCorner[B_LINE] = (data.ping[B_PING]<OutToWall[Y_PING]); |
lilac0112_1 | 14:b510adcb6065 | 227 | if( |
lilac0112_1 | 14:b510adcb6065 | 228 | (data.lnCorner[L_LINE])|| |
lilac0112_1 | 14:b510adcb6065 | 229 | (data.lnCorner[R_LINE])|| |
lilac0112_1 | 14:b510adcb6065 | 230 | (data.lnCorner[F_LINE])|| |
lilac0112_1 | 14:b510adcb6065 | 231 | (data.lnCorner[B_LINE]) |
lilac0112_1 | 14:b510adcb6065 | 232 | ){ |
lilac0112_1 | 18:3a42a931c95a | 233 | |
lilac0112_1 | 16:4fadb7a87497 | 234 | data.NonWall[L_LINE] = (data.ping[L_PING]>WhiteToWall[X_PING]); |
lilac0112_1 | 16:4fadb7a87497 | 235 | data.NonWall[R_LINE] = (data.ping[R_PING]>WhiteToWall[X_PING]); |
lilac0112_1 | 16:4fadb7a87497 | 236 | data.NonWall[F_LINE] = (data.ping[F_PING]>WhiteToWall[Y_PING]); |
lilac0112_1 | 16:4fadb7a87497 | 237 | data.NonWall[B_LINE] = (data.ping[B_PING]>WhiteToWall[Y_PING]); |
lilac0112_1 | 18:3a42a931c95a | 238 | |
lilac0112_1 | 18:3a42a931c95a | 239 | |
lilac0112_1 | 18:3a42a931c95a | 240 | |
lilac0112_1 | 18:3a42a931c95a | 241 | /*LastLineCorner[L_LINE]=NewLineCorner[L_LINE]; |
lilac0112_1 | 18:3a42a931c95a | 242 | LastLineCorner[R_LINE]=NewLineCorner[R_LINE]; |
lilac0112_1 | 18:3a42a931c95a | 243 | LastLineCorner[F_LINE]=NewLineCorner[F_LINE]; |
lilac0112_1 | 18:3a42a931c95a | 244 | LastLineCorner[B_LINE]=NewLineCorner[B_LINE]; |
lilac0112_1 | 18:3a42a931c95a | 245 | |
lilac0112_1 | 18:3a42a931c95a | 246 | NewLineCorner[L_LINE]=data.lnCorner[L_LINE]; |
lilac0112_1 | 18:3a42a931c95a | 247 | NewLineCorner[R_LINE]=data.lnCorner[R_LINE]; |
lilac0112_1 | 18:3a42a931c95a | 248 | NewLineCorner[F_LINE]=data.lnCorner[F_LINE]; |
lilac0112_1 | 18:3a42a931c95a | 249 | NewLineCorner[B_LINE]=data.lnCorner[B_LINE]; |
lilac0112_1 | 18:3a42a931c95a | 250 | |
lilac0112_1 | 18:3a42a931c95a | 251 | if( |
lilac0112_1 | 18:3a42a931c95a | 252 | (LastLineCorner[L_LINE]==NewLineCorner[L_LINE])&& |
lilac0112_1 | 18:3a42a931c95a | 253 | (LastLineCorner[R_LINE]==NewLineCorner[R_LINE])&& |
lilac0112_1 | 18:3a42a931c95a | 254 | (LastLineCorner[F_LINE]==NewLineCorner[F_LINE])&& |
lilac0112_1 | 18:3a42a931c95a | 255 | (LastLineCorner[B_LINE]==NewLineCorner[B_LINE]) |
lilac0112_1 | 18:3a42a931c95a | 256 | ){ |
lilac0112_1 | 18:3a42a931c95a | 257 | data.lnRepeat++; |
lilac0112_1 | 18:3a42a931c95a | 258 | } |
lilac0112_1 | 18:3a42a931c95a | 259 | else{ |
lilac0112_1 | 18:3a42a931c95a | 260 | data.lnRepeat=0; |
lilac0112_1 | 18:3a42a931c95a | 261 | }*/ |
lilac0112_1 | 18:3a42a931c95a | 262 | |
lilac0112_1 | 16:4fadb7a87497 | 263 | data.FieldSpot = LINE_OUTSIDE; |
lilac0112_1 | 14:b510adcb6065 | 264 | LineLiberate(); |
lilac0112_1 | 14:b510adcb6065 | 265 | } |
lilac0112_1 | 14:b510adcb6065 | 266 | } |
lilac0112_1 | 16:4fadb7a87497 | 267 | else if(data.FieldSpot==LINE_OUTSIDE){ |
lilac0112_1 | 18:3a42a931c95a | 268 | if(data.lnRaw==0){ |
lilac0112_1 | 18:3a42a931c95a | 269 | data.FieldSpot = LINE_INSIDE; |
lilac0112_1 | 18:3a42a931c95a | 270 | data.NonWall[L_LINE] = data.NonWall[R_LINE] = data.NonWall[F_LINE] = data.NonWall[B_LINE] = 0; |
lilac0112_1 | 18:3a42a931c95a | 271 | LineLiberate(); |
lilac0112_1 | 18:3a42a931c95a | 272 | LineRankClear(); |
lilac0112_1 | 18:3a42a931c95a | 273 | } |
lilac0112_1 | 14:b510adcb6065 | 274 | } |
lilac0112_1 | 14:b510adcb6065 | 275 | } |
lilac0112_1 | 16:4fadb7a87497 | 276 | if(data.FieldSpot == LINE_OUTSIDE){ |
lilac0112_1 | 16:4fadb7a87497 | 277 | if( |
lilac0112_1 | 16:4fadb7a87497 | 278 | ( |
lilac0112_1 | 16:4fadb7a87497 | 279 | (data.ping[L_PING]>=WhiteToWall[X_PING])|| |
lilac0112_1 | 16:4fadb7a87497 | 280 | (data.NonWall[L_LINE]==1)|| |
lilac0112_1 | 16:4fadb7a87497 | 281 | ((data.lnOrder[0]==A_SPOT)&&(data.lnOrder[1]==C_SPOT)) |
lilac0112_1 | 16:4fadb7a87497 | 282 | //(data.lnOrder[0]==A_SPOT) |
lilac0112_1 | 16:4fadb7a87497 | 283 | )&& |
lilac0112_1 | 16:4fadb7a87497 | 284 | ( |
lilac0112_1 | 16:4fadb7a87497 | 285 | (data.ping[R_PING]>=WhiteToWall[X_PING])|| |
lilac0112_1 | 16:4fadb7a87497 | 286 | (data.NonWall[R_LINE]==1)|| |
lilac0112_1 | 16:4fadb7a87497 | 287 | ((data.lnOrder[0]==B_SPOT)&&(data.lnOrder[1]==C_SPOT)) |
lilac0112_1 | 16:4fadb7a87497 | 288 | //(data.lnOrder[0]==B_SPOT) |
lilac0112_1 | 16:4fadb7a87497 | 289 | )&& |
lilac0112_1 | 16:4fadb7a87497 | 290 | ( |
lilac0112_1 | 16:4fadb7a87497 | 291 | (data.ping[F_PING]>=WhiteToWall[Y_PING])|| |
lilac0112_1 | 16:4fadb7a87497 | 292 | (data.NonWall[F_LINE]==1)|| |
lilac0112_1 | 16:4fadb7a87497 | 293 | ((data.lnOrder[0]==C_SPOT)&&(data.lnOrder[1]==A_SPOT))|| |
lilac0112_1 | 16:4fadb7a87497 | 294 | ((data.lnOrder[0]==C_SPOT)&&(data.lnOrder[1]==B_SPOT)) |
lilac0112_1 | 16:4fadb7a87497 | 295 | )&& |
lilac0112_1 | 16:4fadb7a87497 | 296 | ((data.ping[B_PING]>=WhiteToWall[Y_PING])|| |
lilac0112_1 | 16:4fadb7a87497 | 297 | (data.NonWall[B_LINE]==1)|| |
lilac0112_1 | 16:4fadb7a87497 | 298 | ((data.lnOrder[0]==A_SPOT)&&(data.lnOrder[1]==B_SPOT))|| |
lilac0112_1 | 16:4fadb7a87497 | 299 | ((data.lnOrder[0]==B_SPOT)&&(data.lnOrder[1]==A_SPOT)) |
lilac0112_1 | 16:4fadb7a87497 | 300 | ) |
lilac0112_1 | 16:4fadb7a87497 | 301 | ){ |
lilac0112_1 | 16:4fadb7a87497 | 302 | data.FieldSpot = LINE_INSIDE; |
lilac0112_1 | 16:4fadb7a87497 | 303 | data.NonWall[L_LINE] = data.NonWall[R_LINE] = data.NonWall[F_LINE] = data.NonWall[B_LINE] = 0; |
lilac0112_1 | 16:4fadb7a87497 | 304 | LineLiberate(); |
lilac0112_1 | 16:4fadb7a87497 | 305 | LineRankClear(); |
lilac0112_1 | 13:b20921316f3c | 306 | } |
lilac0112_1 | 16:4fadb7a87497 | 307 | } |
lilac0112_1 | 16:4fadb7a87497 | 308 | if((data.FieldSpot == LINE_INSIDE)&&(0<data.lnHold)&&(data.lnHold<7)&&(data.lnRaw==0)){ |
lilac0112_1 | 16:4fadb7a87497 | 309 | if( |
lilac0112_1 | 16:4fadb7a87497 | 310 | ( |
lilac0112_1 | 16:4fadb7a87497 | 311 | (data.ping[L_PING]>=WhiteToWall[X_PING])|| |
lilac0112_1 | 16:4fadb7a87497 | 312 | ((data.lnOrder[0]==A_SPOT)&&(data.lnOrder[1]==C_SPOT)) |
lilac0112_1 | 16:4fadb7a87497 | 313 | //(data.lnOrder[0]==A_SPOT) |
lilac0112_1 | 16:4fadb7a87497 | 314 | )&& |
lilac0112_1 | 16:4fadb7a87497 | 315 | ( |
lilac0112_1 | 16:4fadb7a87497 | 316 | (data.ping[R_PING]>=WhiteToWall[X_PING])|| |
lilac0112_1 | 16:4fadb7a87497 | 317 | ((data.lnOrder[0]==B_SPOT)&&(data.lnOrder[1]==C_SPOT)) |
lilac0112_1 | 16:4fadb7a87497 | 318 | //(data.lnOrder[0]==B_SPOT) |
lilac0112_1 | 16:4fadb7a87497 | 319 | )&& |
lilac0112_1 | 16:4fadb7a87497 | 320 | ( |
lilac0112_1 | 16:4fadb7a87497 | 321 | (data.ping[F_PING]>=WhiteToWall[Y_PING])|| |
lilac0112_1 | 16:4fadb7a87497 | 322 | ((data.lnOrder[0]==C_SPOT)&&(data.lnOrder[1]==A_SPOT))|| |
lilac0112_1 | 16:4fadb7a87497 | 323 | ((data.lnOrder[0]==C_SPOT)&&(data.lnOrder[1]==B_SPOT)) |
lilac0112_1 | 16:4fadb7a87497 | 324 | )&& |
lilac0112_1 | 16:4fadb7a87497 | 325 | ((data.ping[B_PING]>=WhiteToWall[Y_PING])|| |
lilac0112_1 | 16:4fadb7a87497 | 326 | ((data.lnOrder[0]==A_SPOT)&&(data.lnOrder[1]==B_SPOT))|| |
lilac0112_1 | 16:4fadb7a87497 | 327 | ((data.lnOrder[0]==B_SPOT)&&(data.lnOrder[1]==A_SPOT)) |
lilac0112_1 | 16:4fadb7a87497 | 328 | ) |
lilac0112_1 | 18:3a42a931c95a | 329 | /*|| |
lilac0112_1 | 18:3a42a931c95a | 330 | ( |
lilac0112_1 | 18:3a42a931c95a | 331 | (data.ping[L_PING]>=GoalEdgeToWall[X_PING])&& |
lilac0112_1 | 18:3a42a931c95a | 332 | (data.ping[R_PING]>=GoalEdgeToWall[X_PING]) |
lilac0112_1 | 18:3a42a931c95a | 333 | )*/ |
lilac0112_1 | 16:4fadb7a87497 | 334 | ){ |
lilac0112_1 | 16:4fadb7a87497 | 335 | data.NonWall[L_LINE] = data.NonWall[R_LINE] = data.NonWall[F_LINE] = data.NonWall[B_LINE] = 0; |
lilac0112_1 | 16:4fadb7a87497 | 336 | LineLiberate(); |
lilac0112_1 | 13:b20921316f3c | 337 | } |
lilac0112_1 | 13:b20921316f3c | 338 | } |
lilac0112_1 | 18:3a42a931c95a | 339 | /* |
lilac0112_1 | 18:3a42a931c95a | 340 | if( |
lilac0112_1 | 18:3a42a931c95a | 341 | (data.irNotice==IR_NONE)|| |
lilac0112_1 | 18:3a42a931c95a | 342 | (data.irNotice==IR_FAR)|| |
lilac0112_1 | 18:3a42a931c95a | 343 | ( |
lilac0112_1 | 18:3a42a931c95a | 344 | (data.ping[L_PING]>=GoalEdgeToWall[X_PING])&& |
lilac0112_1 | 18:3a42a931c95a | 345 | (data.ping[R_PING]>=GoalEdgeToWall[X_PING]) |
lilac0112_1 | 18:3a42a931c95a | 346 | ) |
lilac0112_1 | 18:3a42a931c95a | 347 | ){ |
lilac0112_1 | 18:3a42a931c95a | 348 | data.lnRepeat = 0; |
lilac0112_1 | 18:3a42a931c95a | 349 | |
lilac0112_1 | 18:3a42a931c95a | 350 | data.lnCorner[L_LINE]=LINE_EMPTY; |
lilac0112_1 | 18:3a42a931c95a | 351 | data.lnCorner[R_LINE]=LINE_EMPTY; |
lilac0112_1 | 18:3a42a931c95a | 352 | data.lnCorner[F_LINE]=LINE_EMPTY; |
lilac0112_1 | 18:3a42a931c95a | 353 | data.lnCorner[B_LINE]=LINE_EMPTY; |
lilac0112_1 | 18:3a42a931c95a | 354 | } |
lilac0112_1 | 18:3a42a931c95a | 355 | data.lnRepeat=0; |
lilac0112_1 | 18:3a42a931c95a | 356 | if(data.lnRepeat>0){ |
lilac0112_1 | 18:3a42a931c95a | 357 | if( |
lilac0112_1 | 18:3a42a931c95a | 358 | ((pow_x>=0)&&(data.lnCorner[R_LINE]))|| |
lilac0112_1 | 18:3a42a931c95a | 359 | ((pow_x<0)&&(data.lnCorner[L_LINE])) |
lilac0112_1 | 18:3a42a931c95a | 360 | ){ |
lilac0112_1 | 18:3a42a931c95a | 361 | data.lnStay[X_LINE]=0; |
lilac0112_1 | 18:3a42a931c95a | 362 | } |
lilac0112_1 | 18:3a42a931c95a | 363 | else{ |
lilac0112_1 | 18:3a42a931c95a | 364 | data.lnStay[X_LINE]=1; |
lilac0112_1 | 18:3a42a931c95a | 365 | } |
lilac0112_1 | 18:3a42a931c95a | 366 | if( |
lilac0112_1 | 18:3a42a931c95a | 367 | ((pow_y>=0)&&(data.lnCorner[F_LINE]))|| |
lilac0112_1 | 18:3a42a931c95a | 368 | ((pow_y<0)&&(data.lnCorner[B_LINE])) |
lilac0112_1 | 18:3a42a931c95a | 369 | ){ |
lilac0112_1 | 18:3a42a931c95a | 370 | data.lnStay[Y_LINE]=0; |
lilac0112_1 | 18:3a42a931c95a | 371 | } |
lilac0112_1 | 18:3a42a931c95a | 372 | else{ |
lilac0112_1 | 18:3a42a931c95a | 373 | data.lnStay[Y_LINE]=1; |
lilac0112_1 | 18:3a42a931c95a | 374 | } |
lilac0112_1 | 18:3a42a931c95a | 375 | } |
lilac0112_1 | 18:3a42a931c95a | 376 | else{ |
lilac0112_1 | 18:3a42a931c95a | 377 | data.lnStay[X_LINE]=data.lnStay[Y_LINE]=1; |
lilac0112_1 | 18:3a42a931c95a | 378 | }*/ |
lilac0112_1 | 18:3a42a931c95a | 379 | |
lilac0112_1 | 12:bee8f883c33a | 380 | } |
lilac0112_1 | 0:ea35c18c85fc | 381 | void modeAttack4(void){ |
lilac0112_1 | 10:6df631c39f9b | 382 | double ir_x_dir, ir_y_dir; |
lilac0112_1 | 11:3efae754e6ef | 383 | double ir_x_turn, ir_y_turn; |
lilac0112_1 | 11:3efae754e6ef | 384 | double ir_x, ir_y; |
lilac0112_1 | 13:b20921316f3c | 385 | |
lilac0112_1 | 14:b510adcb6065 | 386 | double LineSlowPower[2]; |
lilac0112_1 | 14:b510adcb6065 | 387 | double LineReturnPower[2]; |
lilac0112_1 | 14:b510adcb6065 | 388 | |
lilac0112_1 | 14:b510adcb6065 | 389 | //double pow_x, pow_y; |
lilac0112_1 | 10:6df631c39f9b | 390 | uint8_t ir_pow; |
lilac0112_1 | 10:6df631c39f9b | 391 | int vx,vy,vs; |
lilac0112_1 | 15:17502a27a60b | 392 | //static uint8_t data.FieldSpot; |
lilac0112_1 | 11:3efae754e6ef | 393 | |
lilac0112_1 | 11:3efae754e6ef | 394 | |
lilac0112_1 | 10:6df631c39f9b | 395 | if(sys.KickOffFlag==1){ |
lilac0112_1 | 10:6df631c39f9b | 396 | |
lilac0112_1 | 18:3a42a931c95a | 397 | sys.IrBlind=0; |
lilac0112_1 | 10:6df631c39f9b | 398 | sys.LineBlind=0; |
lilac0112_1 | 10:6df631c39f9b | 399 | sys.PingBlind=0; |
lilac0112_1 | 10:6df631c39f9b | 400 | |
lilac0112_1 | 19:967207de919d | 401 | sys.HomeBlind=1; |
lilac0112_1 | 19:967207de919d | 402 | sys.DriBlind=1; |
lilac0112_1 | 19:967207de919d | 403 | |
lilac0112_1 | 19:967207de919d | 404 | |
lilac0112_1 | 18:3a42a931c95a | 405 | sys.ir_pow_table = 0; |
lilac0112_1 | 18:3a42a931c95a | 406 | |
lilac0112_1 | 18:3a42a931c95a | 407 | data.lnCorner[L_LINE]=data.lnCorner[R_LINE]=data.lnCorner[F_LINE]=data.lnCorner[B_LINE]=LINE_EMPTY; |
lilac0112_1 | 18:3a42a931c95a | 408 | data.lnRepeat = 0; |
lilac0112_1 | 18:3a42a931c95a | 409 | |
lilac0112_1 | 18:3a42a931c95a | 410 | //data.lnStay[X_LINE]=data.lnStay[Y_LINE]=1; |
lilac0112_1 | 18:3a42a931c95a | 411 | data.lnStop[X_LINE]=data.lnStop[Y_LINE]=1; |
lilac0112_1 | 18:3a42a931c95a | 412 | |
lilac0112_1 | 15:17502a27a60b | 413 | data.FieldSpot = LINE_INSIDE; |
lilac0112_1 | 14:b510adcb6065 | 414 | LineLiberate(); |
lilac0112_1 | 16:4fadb7a87497 | 415 | LineRankClear(); |
lilac0112_1 | 13:b20921316f3c | 416 | |
lilac0112_1 | 19:967207de919d | 417 | cmps_set.AtkDeg=0; |
lilac0112_1 | 19:967207de919d | 418 | |
lilac0112_1 | 19:967207de919d | 419 | //sys.BallHoldJudgeFlag=0; |
lilac0112_1 | 19:967207de919d | 420 | //sys.BallHoldFlag=0; |
lilac0112_1 | 19:967207de919d | 421 | |
lilac0112_1 | 19:967207de919d | 422 | |
lilac0112_1 | 10:6df631c39f9b | 423 | sys.KickOffFlag=0; |
lilac0112_1 | 0:ea35c18c85fc | 424 | } |
lilac0112_1 | 10:6df631c39f9b | 425 | //data |
lilac0112_1 | 19:967207de919d | 426 | /*if(sys.IrFlag==1){ReadIr();sys.IrFlag=0;} |
lilac0112_1 | 10:6df631c39f9b | 427 | if(sys.PidFlag==1){PidUpdate();sys.PidFlag=0;} |
lilac0112_1 | 10:6df631c39f9b | 428 | if(sys.UswFlag==1){ReadPing();sys.UswFlag=0;} |
lilac0112_1 | 19:967207de919d | 429 | if(sys.UswFlag2==1){ReadPing2();sys.UswFlag2=0;}*/ |
lilac0112_1 | 19:967207de919d | 430 | if(sys.InfoFlag==1){ReadInfo();sys.InfoFlag=0;} |
lilac0112_1 | 19:967207de919d | 431 | |
lilac0112_1 | 10:6df631c39f9b | 432 | //if(sys.KickFlag==1){DriveSolenoid();} |
lilac0112_1 | 11:3efae754e6ef | 433 | data.lnRaw = LineRaw; |
lilac0112_1 | 11:3efae754e6ef | 434 | data.lnHold = LineHold; |
lilac0112_1 | 19:967207de919d | 435 | data.ball = (BallCheckerA.read_u16()<20000); |
lilac0112_1 | 19:967207de919d | 436 | |
lilac0112_1 | 19:967207de919d | 437 | /* |
lilac0112_1 | 19:967207de919d | 438 | if(sys.DriBlind==0){ |
lilac0112_1 | 19:967207de919d | 439 | if((data.ball==1)&&(sys.BallHoldJudgeFlag==0)){ |
lilac0112_1 | 19:967207de919d | 440 | sys.BallHoldJudgeFlag=1; |
lilac0112_1 | 19:967207de919d | 441 | Ball_catch.attach(&AdmitBallHold, 1.0); |
lilac0112_1 | 19:967207de919d | 442 | } |
lilac0112_1 | 19:967207de919d | 443 | |
lilac0112_1 | 19:967207de919d | 444 | if((data.ball==0)&&(sys.BallHoldFlag==1)&&(sys.BallHoldGiveUpFlag==0)){ |
lilac0112_1 | 19:967207de919d | 445 | sys.BallHoldGiveUpFlag=1; |
lilac0112_1 | 19:967207de919d | 446 | Ball_leave.attach(&GiveUpBallHold, 1.0); |
lilac0112_1 | 19:967207de919d | 447 | } |
lilac0112_1 | 19:967207de919d | 448 | if((data.ball==1)&&(sys.BallHoldFlag==1)){ |
lilac0112_1 | 19:967207de919d | 449 | sys.BallHoldGiveUpFlag=0; |
lilac0112_1 | 19:967207de919d | 450 | Ball_leave.detach(); |
lilac0112_1 | 19:967207de919d | 451 | } |
lilac0112_1 | 19:967207de919d | 452 | |
lilac0112_1 | 19:967207de919d | 453 | if((data.ping[B_PING]<30)&&(sys.BallHoldFlag==1)){ |
lilac0112_1 | 19:967207de919d | 454 | cmps_set.AtkDeg = 150; |
lilac0112_1 | 19:967207de919d | 455 | Kick_now.attach(&DriveSolenoid, .125); |
lilac0112_1 | 19:967207de919d | 456 | Front_now.attach(&FaceToFront, .75); |
lilac0112_1 | 19:967207de919d | 457 | |
lilac0112_1 | 19:967207de919d | 458 | sys.BallHoldJudgeFlag=0; |
lilac0112_1 | 19:967207de919d | 459 | sys.BallHoldFlag=0; |
lilac0112_1 | 19:967207de919d | 460 | Ball_catch.detach(); |
lilac0112_1 | 19:967207de919d | 461 | Ball_leave.detach(); |
lilac0112_1 | 19:967207de919d | 462 | } |
lilac0112_1 | 19:967207de919d | 463 | } |
lilac0112_1 | 19:967207de919d | 464 | else{ |
lilac0112_1 | 19:967207de919d | 465 | sys.BallHoldFlag=0; |
lilac0112_1 | 19:967207de919d | 466 | }*/ |
lilac0112_1 | 19:967207de919d | 467 | |
lilac0112_1 | 19:967207de919d | 468 | if(data.irNotice==IR_NONE){ |
lilac0112_1 | 19:967207de919d | 469 | sys.BackHomeFlag=(sys.HomeBlind==0); |
lilac0112_1 | 19:967207de919d | 470 | } |
lilac0112_1 | 19:967207de919d | 471 | else{ |
lilac0112_1 | 19:967207de919d | 472 | sys.BackHomeFlag=0; |
lilac0112_1 | 19:967207de919d | 473 | } |
lilac0112_1 | 10:6df631c39f9b | 474 | |
lilac0112_1 | 18:3a42a931c95a | 475 | if(data.ping[B_PING]<=30){ |
lilac0112_1 | 18:3a42a931c95a | 476 | sys.ir_pow_table=1; |
lilac0112_1 | 18:3a42a931c95a | 477 | ir_x_dir = ir_move_val[1][data.irNotice][data.irPosition][IR_X_DIR]; |
lilac0112_1 | 18:3a42a931c95a | 478 | ir_y_dir = ir_move_val[1][data.irNotice][data.irPosition][IR_Y_DIR]; |
lilac0112_1 | 18:3a42a931c95a | 479 | ir_x_turn = ir_move_val[1][data.irNotice][data.irPosition][IR_X_TURN]; |
lilac0112_1 | 18:3a42a931c95a | 480 | ir_y_turn = ir_move_val[1][data.irNotice][data.irPosition][IR_Y_TURN]; |
lilac0112_1 | 18:3a42a931c95a | 481 | } |
lilac0112_1 | 18:3a42a931c95a | 482 | else{ |
lilac0112_1 | 18:3a42a931c95a | 483 | sys.ir_pow_table=0; |
lilac0112_1 | 18:3a42a931c95a | 484 | ir_x_dir = ir_move_val[0][data.irNotice][data.irPosition][IR_X_DIR]; |
lilac0112_1 | 18:3a42a931c95a | 485 | ir_y_dir = ir_move_val[0][data.irNotice][data.irPosition][IR_Y_DIR]; |
lilac0112_1 | 18:3a42a931c95a | 486 | ir_x_turn = ir_move_val[0][data.irNotice][data.irPosition][IR_X_TURN]; |
lilac0112_1 | 18:3a42a931c95a | 487 | ir_y_turn = ir_move_val[0][data.irNotice][data.irPosition][IR_Y_TURN]; |
lilac0112_1 | 18:3a42a931c95a | 488 | } |
lilac0112_1 | 18:3a42a931c95a | 489 | /* |
lilac0112_1 | 18:3a42a931c95a | 490 | ir_x_dir = ir_move_val[sys.ir_pow_table][data.irNotice][data.irPosition][IR_X_DIR]; |
lilac0112_1 | 18:3a42a931c95a | 491 | ir_y_dir = ir_move_val[sys.ir_pow_table][data.irNotice][data.irPosition][IR_Y_DIR]; |
lilac0112_1 | 18:3a42a931c95a | 492 | ir_x_turn = ir_move_val[sys.ir_pow_table][data.irNotice][data.irPosition][IR_X_TURN]; |
lilac0112_1 | 18:3a42a931c95a | 493 | ir_y_turn = ir_move_val[sys.ir_pow_table][data.irNotice][data.irPosition][IR_Y_TURN]; |
lilac0112_1 | 18:3a42a931c95a | 494 | */ |
lilac0112_1 | 18:3a42a931c95a | 495 | /* |
lilac0112_1 | 10:6df631c39f9b | 496 | ir_x_dir = ir_move_val[0][data.irNotice][data.irPosition][IR_X_DIR]; |
lilac0112_1 | 10:6df631c39f9b | 497 | ir_y_dir = ir_move_val[0][data.irNotice][data.irPosition][IR_Y_DIR]; |
lilac0112_1 | 10:6df631c39f9b | 498 | ir_x_turn = ir_move_val[0][data.irNotice][data.irPosition][IR_X_TURN]; |
lilac0112_1 | 10:6df631c39f9b | 499 | ir_y_turn = ir_move_val[0][data.irNotice][data.irPosition][IR_Y_TURN]; |
lilac0112_1 | 18:3a42a931c95a | 500 | */ |
lilac0112_1 | 18:3a42a931c95a | 501 | |
lilac0112_1 | 10:6df631c39f9b | 502 | if(data.irNotice==IR_CLOSER){ |
lilac0112_1 | 10:6df631c39f9b | 503 | ir_pow = sys.s_pow; |
lilac0112_1 | 10:6df631c39f9b | 504 | } |
lilac0112_1 | 10:6df631c39f9b | 505 | else if(data.irNotice==IR_CLOSE){ |
lilac0112_1 | 10:6df631c39f9b | 506 | ir_pow = sys.m_pow; |
lilac0112_1 | 10:6df631c39f9b | 507 | } |
lilac0112_1 | 10:6df631c39f9b | 508 | else if(data.irNotice==IR_FAR){ |
lilac0112_1 | 10:6df631c39f9b | 509 | ir_pow = sys.l_pow; |
lilac0112_1 | 10:6df631c39f9b | 510 | } |
lilac0112_1 | 10:6df631c39f9b | 511 | else{//data.irNotice==IR_NONE |
lilac0112_1 | 10:6df631c39f9b | 512 | ir_pow = 0; |
lilac0112_1 | 10:6df631c39f9b | 513 | } |
lilac0112_1 | 18:3a42a931c95a | 514 | |
lilac0112_1 | 19:967207de919d | 515 | if((sys.DriBlind==0)&&(data.irNotice==IR_CLOSER)&&((data.irPosition==10)||(data.irPosition==11)||(data.irPosition==12))){ |
lilac0112_1 | 19:967207de919d | 516 | sys.DribbleFlag=1; |
lilac0112_1 | 19:967207de919d | 517 | ir_pow=20; |
lilac0112_1 | 19:967207de919d | 518 | /*if(cmps_set.AtkDeg==0){ |
lilac0112_1 | 19:967207de919d | 519 | if(data.irPosition==10) cmps_set.AtkDeg=30; |
lilac0112_1 | 19:967207de919d | 520 | if(data.irPosition==11) cmps_set.AtkDeg=0; |
lilac0112_1 | 19:967207de919d | 521 | if(data.irPosition==12) cmps_set.AtkDeg=-30; |
lilac0112_1 | 19:967207de919d | 522 | } |
lilac0112_1 | 19:967207de919d | 523 | else if(cmps_set.AtkDeg>0){ |
lilac0112_1 | 19:967207de919d | 524 | if(data.irPosition==10) cmps_set.AtkDeg=0; |
lilac0112_1 | 19:967207de919d | 525 | if(data.irPosition==11) cmps_set.AtkDeg=30; |
lilac0112_1 | 19:967207de919d | 526 | if(data.irPosition==12) cmps_set.AtkDeg=0; |
lilac0112_1 | 19:967207de919d | 527 | |
lilac0112_1 | 19:967207de919d | 528 | } |
lilac0112_1 | 19:967207de919d | 529 | else if(cmps_set.AtkDeg<0){ |
lilac0112_1 | 19:967207de919d | 530 | if(data.irPosition==10) cmps_set.AtkDeg=0; |
lilac0112_1 | 19:967207de919d | 531 | if(data.irPosition==11) cmps_set.AtkDeg=-30; |
lilac0112_1 | 19:967207de919d | 532 | if(data.irPosition==12) cmps_set.AtkDeg=0; |
lilac0112_1 | 19:967207de919d | 533 | }*/ |
lilac0112_1 | 19:967207de919d | 534 | } |
lilac0112_1 | 19:967207de919d | 535 | else{ |
lilac0112_1 | 19:967207de919d | 536 | sys.DribbleFlag=0; |
lilac0112_1 | 19:967207de919d | 537 | cmps_set.AtkDeg=0; |
lilac0112_1 | 19:967207de919d | 538 | |
lilac0112_1 | 19:967207de919d | 539 | /*sys.BallHoldJudgeFlag=0; |
lilac0112_1 | 19:967207de919d | 540 | sys.BallHoldFlag=0; |
lilac0112_1 | 19:967207de919d | 541 | Ball_catch.detach(); |
lilac0112_1 | 19:967207de919d | 542 | Ball_leave.detach();*/ |
lilac0112_1 | 19:967207de919d | 543 | } |
lilac0112_1 | 19:967207de919d | 544 | |
lilac0112_1 | 19:967207de919d | 545 | if(sys.IrBlind==1) ir_pow=0; |
lilac0112_1 | 19:967207de919d | 546 | |
lilac0112_1 | 18:3a42a931c95a | 547 | |
lilac0112_1 | 18:3a42a931c95a | 548 | if((data.ping[R_PING]<data.ping[L_PING])&&(data.irPosition==17)){ |
lilac0112_1 | 18:3a42a931c95a | 549 | ir_x_turn = -ir_x_turn; |
lilac0112_1 | 18:3a42a931c95a | 550 | ir_y_turn = -ir_y_turn; |
lilac0112_1 | 18:3a42a931c95a | 551 | } |
lilac0112_1 | 10:6df631c39f9b | 552 | |
lilac0112_1 | 11:3efae754e6ef | 553 | ir_x = (ir_x_dir + ir_x_turn); |
lilac0112_1 | 11:3efae754e6ef | 554 | ir_y = (ir_y_dir + ir_y_turn); |
lilac0112_1 | 11:3efae754e6ef | 555 | |
lilac0112_1 | 14:b510adcb6065 | 556 | if(sys.LineBlind==1){ |
lilac0112_1 | 14:b510adcb6065 | 557 | |
lilac0112_1 | 14:b510adcb6065 | 558 | LineSlowPower[X_LINE] = 1.0; |
lilac0112_1 | 14:b510adcb6065 | 559 | LineSlowPower[Y_LINE] = 1.0; |
lilac0112_1 | 14:b510adcb6065 | 560 | |
lilac0112_1 | 14:b510adcb6065 | 561 | LineReturnPower[X_LINE] = 0.0; |
lilac0112_1 | 14:b510adcb6065 | 562 | LineReturnPower[Y_LINE] = 0.0; |
lilac0112_1 | 14:b510adcb6065 | 563 | |
lilac0112_1 | 14:b510adcb6065 | 564 | data.lnStop[X_LINE] = 1; |
lilac0112_1 | 14:b510adcb6065 | 565 | data.lnStop[Y_LINE] = 1; |
lilac0112_1 | 14:b510adcb6065 | 566 | |
lilac0112_1 | 15:17502a27a60b | 567 | data.FieldSpot = LINE_INSIDE; |
lilac0112_1 | 14:b510adcb6065 | 568 | } |
lilac0112_1 | 14:b510adcb6065 | 569 | else{ |
lilac0112_1 | 18:3a42a931c95a | 570 | LineJudgeReset(ir_x, ir_y, &LineSlowPower[X_LINE], &LineSlowPower[Y_LINE]); |
lilac0112_1 | 16:4fadb7a87497 | 571 | |
lilac0112_1 | 18:3a42a931c95a | 572 | LineJudgeSlow(ir_x, ir_y, &LineSlowPower[X_LINE], &LineSlowPower[Y_LINE]); |
lilac0112_1 | 18:3a42a931c95a | 573 | LineJudgeReturn(ir_x*LineSlowPower[X_LINE], ir_y*LineSlowPower[Y_LINE], &LineReturnPower[X_LINE], &LineReturnPower[Y_LINE]); |
lilac0112_1 | 18:3a42a931c95a | 574 | /* |
lilac0112_1 | 14:b510adcb6065 | 575 | LineSlowPower[X_LINE] = 1.0; |
lilac0112_1 | 14:b510adcb6065 | 576 | LineSlowPower[Y_LINE] = 1.0; |
lilac0112_1 | 18:3a42a931c95a | 577 | |
lilac0112_1 | 14:b510adcb6065 | 578 | LineReturnPower[X_LINE] = 0.0; |
lilac0112_1 | 14:b510adcb6065 | 579 | LineReturnPower[Y_LINE] = 0.0; |
lilac0112_1 | 14:b510adcb6065 | 580 | |
lilac0112_1 | 14:b510adcb6065 | 581 | data.lnStop[X_LINE] = 1; |
lilac0112_1 | 14:b510adcb6065 | 582 | data.lnStop[Y_LINE] = 1; |
lilac0112_1 | 17:cc862ecf9812 | 583 | */ |
lilac0112_1 | 14:b510adcb6065 | 584 | |
lilac0112_1 | 14:b510adcb6065 | 585 | } |
lilac0112_1 | 19:967207de919d | 586 | //if(data.FieldSpot==LINE_OUTSIDE) LED = 0x9; |
lilac0112_1 | 19:967207de919d | 587 | //if(data.FieldSpot==LINE_INSIDE) LED = 0x6; |
lilac0112_1 | 19:967207de919d | 588 | |
lilac0112_1 | 19:967207de919d | 589 | //LED = 0xFF*sys.BallHoldFlag; |
lilac0112_1 | 19:967207de919d | 590 | |
lilac0112_1 | 19:967207de919d | 591 | LED = 0xFF*(data.ping[B_PING]<30); |
lilac0112_1 | 14:b510adcb6065 | 592 | |
lilac0112_1 | 16:4fadb7a87497 | 593 | //LED = ((data.lnOrder[0]!=LINE_EMPTY)<<2) | ((data.lnOrder[1]!=LINE_EMPTY)<<1) | ((data.lnOrder[2]!=LINE_EMPTY)<<0); |
lilac0112_1 | 14:b510adcb6065 | 594 | |
lilac0112_1 | 14:b510adcb6065 | 595 | //else LED = 0xA; |
lilac0112_1 | 14:b510adcb6065 | 596 | //LED = LineHold; |
lilac0112_1 | 14:b510adcb6065 | 597 | |
lilac0112_1 | 18:3a42a931c95a | 598 | vx = (ir_pow*ir_x)*data.lnStop[X_LINE]*(/*data.lnStay[X_LINE]*/1)*LineSlowPower[X_LINE] + LineReturnPower[X_LINE]; |
lilac0112_1 | 18:3a42a931c95a | 599 | vy = (ir_pow*ir_y)*data.lnStop[Y_LINE]*(/*data.lnStay[X_LINE]*/1)*LineSlowPower[Y_LINE] + LineReturnPower[Y_LINE]; |
lilac0112_1 | 10:6df631c39f9b | 600 | vs = cmps_set.OutputPID; |
lilac0112_1 | 10:6df631c39f9b | 601 | move( |
lilac0112_1 | 10:6df631c39f9b | 602 | vx, |
lilac0112_1 | 10:6df631c39f9b | 603 | vy, |
lilac0112_1 | 10:6df631c39f9b | 604 | vs |
lilac0112_1 | 10:6df631c39f9b | 605 | ); |
lilac0112_1 | 10:6df631c39f9b | 606 | if(sys.MotorFlag==1){tx_motor();sys.MotorFlag=0;} |
lilac0112_1 | 0:ea35c18c85fc | 607 | if(sys.stopflag==1){ |
lilac0112_1 | 10:6df631c39f9b | 608 | |
lilac0112_1 | 0:ea35c18c85fc | 609 | //停止処理 |
lilac0112_1 | 0:ea35c18c85fc | 610 | } |
lilac0112_1 | 0:ea35c18c85fc | 611 | return; |
lilac0112_1 | 0:ea35c18c85fc | 612 | } |
lilac0112_1 | 0:ea35c18c85fc | 613 | void modeAttack5(void){ |
lilac0112_1 | 0:ea35c18c85fc | 614 | if(sys.IrFlag==1){ |
lilac0112_1 | 0:ea35c18c85fc | 615 | ReadIr(); |
lilac0112_1 | 0:ea35c18c85fc | 616 | sys.IrFlag=0; |
lilac0112_1 | 0:ea35c18c85fc | 617 | } |
lilac0112_1 | 0:ea35c18c85fc | 618 | if(sys.PidFlag==1){ |
lilac0112_1 | 0:ea35c18c85fc | 619 | PidUpdate(); |
lilac0112_1 | 0:ea35c18c85fc | 620 | sys.PidFlag=0; |
lilac0112_1 | 0:ea35c18c85fc | 621 | } |
lilac0112_1 | 10:6df631c39f9b | 622 | move(0,0,cmps_set.OutputPID); |
lilac0112_1 | 0:ea35c18c85fc | 623 | if(sys.MotorFlag==1){ |
lilac0112_1 | 14:b510adcb6065 | 624 | //LED[0] = 1; |
lilac0112_1 | 14:b510adcb6065 | 625 | //LED[1] = 0; |
lilac0112_1 | 0:ea35c18c85fc | 626 | tx_motor(); |
lilac0112_1 | 0:ea35c18c85fc | 627 | sys.MotorFlag=0; |
lilac0112_1 | 0:ea35c18c85fc | 628 | } |
lilac0112_1 | 5:5ff3a7d5d8c2 | 629 | else{ |
lilac0112_1 | 14:b510adcb6065 | 630 | //LED[0] = 0; |
lilac0112_1 | 14:b510adcb6065 | 631 | //LED[1] = 1; |
lilac0112_1 | 5:5ff3a7d5d8c2 | 632 | } |
lilac0112_1 | 0:ea35c18c85fc | 633 | if(sys.stopflag==1){ |
lilac0112_1 | 0:ea35c18c85fc | 634 | //停止処理 |
lilac0112_1 | 0:ea35c18c85fc | 635 | } |
lilac0112_1 | 0:ea35c18c85fc | 636 | return; |
lilac0112_1 | 0:ea35c18c85fc | 637 | } |