Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed AQM1602 HMC6352 PID
main_processing/strategy/strategy.cpp@23:df68f1a2c226, 2016-03-16 (annotated)
- Committer:
 - lilac0112_1
 - Date:
 - Wed Mar 16 12:25:48 2016 +0000
 - Revision:
 - 23:df68f1a2c226
 - Parent:
 - 21:378470320524
 - Child:
 - 24:34ef6379b0df
 
somehow
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 | 23:df68f1a2c226 | 131 | |
| lilac0112_1 | 23:df68f1a2c226 | 132 | if( | 
| lilac0112_1 | 23:df68f1a2c226 | 133 | (data.lnOrder[0]==A_SPOT)&&(data.lnOrder[1]==C_SPOT)&&(data.lnOrder[2]==B_SPOT) | 
| lilac0112_1 | 23:df68f1a2c226 | 134 | ){ | 
| lilac0112_1 | 23:df68f1a2c226 | 135 | *x = -LineReturn[4]; | 
| lilac0112_1 | 23:df68f1a2c226 | 136 | data.lnStop[X_LINE]=0; | 
| lilac0112_1 | 23:df68f1a2c226 | 137 | } | 
| lilac0112_1 | 23:df68f1a2c226 | 138 | else if( | 
| lilac0112_1 | 23:df68f1a2c226 | 139 | (data.lnOrder[0]==B_SPOT)&&(data.lnOrder[1]==C_SPOT)&&(data.lnOrder[2]==A_SPOT) | 
| lilac0112_1 | 23:df68f1a2c226 | 140 | ){ | 
| lilac0112_1 | 23:df68f1a2c226 | 141 | *x = LineReturn[4]; | 
| lilac0112_1 | 23:df68f1a2c226 | 142 | data.lnStop[X_LINE]=0; | 
| lilac0112_1 | 23:df68f1a2c226 | 143 | } | 
| lilac0112_1 | 23:df68f1a2c226 | 144 | else{ | 
| lilac0112_1 | 23:df68f1a2c226 | 145 | *x = 0; | 
| lilac0112_1 | 23:df68f1a2c226 | 146 | data.lnStop[X_LINE]=0; | 
| lilac0112_1 | 23:df68f1a2c226 | 147 | } | 
| lilac0112_1 | 17:cc862ecf9812 | 148 | } | 
| lilac0112_1 | 12:bee8f883c33a | 149 | } | 
| lilac0112_1 | 12:bee8f883c33a | 150 | //y | 
| lilac0112_1 | 17:cc862ecf9812 | 151 | if(data.ReturnDir[Y_LINE]==F_LINE){ | 
| lilac0112_1 | 13:b20921316f3c | 152 | if(pow_y>0){ | 
| lilac0112_1 | 17:cc862ecf9812 | 153 | *y = 0; | 
| lilac0112_1 | 17:cc862ecf9812 | 154 | data.lnStop[Y_LINE]=1; | 
| lilac0112_1 | 13:b20921316f3c | 155 | } | 
| lilac0112_1 | 13:b20921316f3c | 156 | else{ | 
| lilac0112_1 | 17:cc862ecf9812 | 157 | *y = LineReturn[4]; | 
| lilac0112_1 | 17:cc862ecf9812 | 158 | data.lnStop[Y_LINE]=0; | 
| lilac0112_1 | 13:b20921316f3c | 159 | } | 
| lilac0112_1 | 12:bee8f883c33a | 160 | } | 
| lilac0112_1 | 17:cc862ecf9812 | 161 | else if(data.ReturnDir[Y_LINE]==B_LINE){ | 
| lilac0112_1 | 13:b20921316f3c | 162 | if(pow_y<0){ | 
| lilac0112_1 | 13:b20921316f3c | 163 | *y = 0; | 
| lilac0112_1 | 13:b20921316f3c | 164 | data.lnStop[Y_LINE]=1; | 
| lilac0112_1 | 13:b20921316f3c | 165 | } | 
| lilac0112_1 | 13:b20921316f3c | 166 | else{ | 
| lilac0112_1 | 13:b20921316f3c | 167 | *y = -LineReturn[4]; | 
| lilac0112_1 | 13:b20921316f3c | 168 | data.lnStop[Y_LINE]=0; | 
| lilac0112_1 | 13:b20921316f3c | 169 | } | 
| lilac0112_1 | 12:bee8f883c33a | 170 | } | 
| lilac0112_1 | 17:cc862ecf9812 | 171 | else if(data.ReturnDir[Y_LINE]==LINE_EMPTY){ | 
| lilac0112_1 | 17:cc862ecf9812 | 172 | if((LinePingState[B_PING]==0)&&(LinePingState[F_PING]==0)){ | 
| lilac0112_1 | 17:cc862ecf9812 | 173 | /*if(pow_y>0){ | 
| lilac0112_1 | 17:cc862ecf9812 | 174 | *y = -pow_y*(1-0.75); | 
| lilac0112_1 | 17:cc862ecf9812 | 175 | } | 
| lilac0112_1 | 17:cc862ecf9812 | 176 | else{ | 
| lilac0112_1 | 17:cc862ecf9812 | 177 | *y = pow_y*(1-0.75); | 
| lilac0112_1 | 17:cc862ecf9812 | 178 | }*/ | 
| lilac0112_1 | 17:cc862ecf9812 | 179 | data.lnStop[Y_LINE]=1; | 
| lilac0112_1 | 13:b20921316f3c | 180 | } | 
| lilac0112_1 | 17:cc862ecf9812 | 181 | if((LinePingState[B_PING]==0)&&(LinePingState[F_PING]==1)){ | 
| lilac0112_1 | 17:cc862ecf9812 | 182 | |
| lilac0112_1 | 17:cc862ecf9812 | 183 | data.ReturnDir[Y_LINE]=B_LINE; | 
| lilac0112_1 | 17:cc862ecf9812 | 184 | |
| lilac0112_1 | 17:cc862ecf9812 | 185 | if(pow_y<0){ | 
| lilac0112_1 | 17:cc862ecf9812 | 186 | *y = 0; | 
| lilac0112_1 | 17:cc862ecf9812 | 187 | data.lnStop[Y_LINE]=1; | 
| lilac0112_1 | 17:cc862ecf9812 | 188 | } | 
| lilac0112_1 | 17:cc862ecf9812 | 189 | else{ | 
| lilac0112_1 | 17:cc862ecf9812 | 190 | *y = -LineReturn[4]; | 
| lilac0112_1 | 17:cc862ecf9812 | 191 | data.lnStop[Y_LINE]=0; | 
| lilac0112_1 | 17:cc862ecf9812 | 192 | } | 
| lilac0112_1 | 17:cc862ecf9812 | 193 | } | 
| lilac0112_1 | 17:cc862ecf9812 | 194 | if((LinePingState[B_PING]==1)&&(LinePingState[F_PING]==0)){ | 
| lilac0112_1 | 17:cc862ecf9812 | 195 | |
| lilac0112_1 | 17:cc862ecf9812 | 196 | data.ReturnDir[Y_LINE]=F_LINE; | 
| lilac0112_1 | 17:cc862ecf9812 | 197 | |
| lilac0112_1 | 17:cc862ecf9812 | 198 | if(pow_y>0){ | 
| lilac0112_1 | 17:cc862ecf9812 | 199 | *y = 0; | 
| lilac0112_1 | 17:cc862ecf9812 | 200 | data.lnStop[Y_LINE]=1; | 
| lilac0112_1 | 17:cc862ecf9812 | 201 | } | 
| lilac0112_1 | 17:cc862ecf9812 | 202 | else{ | 
| lilac0112_1 | 17:cc862ecf9812 | 203 | *y = LineReturn[4]; | 
| lilac0112_1 | 17:cc862ecf9812 | 204 | data.lnStop[Y_LINE]=0; | 
| lilac0112_1 | 17:cc862ecf9812 | 205 | } | 
| lilac0112_1 | 17:cc862ecf9812 | 206 | } | 
| lilac0112_1 | 17:cc862ecf9812 | 207 | if((LinePingState[B_PING]==1)&&(LinePingState[F_PING]==1)){ | 
| lilac0112_1 | 23:df68f1a2c226 | 208 | if( | 
| lilac0112_1 | 23:df68f1a2c226 | 209 | (data.lnOrder[0]==C_SPOT)&&(data.lnOrder[1]==A_SPOT)&&(data.lnOrder[2]==B_SPOT)|| | 
| lilac0112_1 | 23:df68f1a2c226 | 210 | (data.lnOrder[0]==C_SPOT)&&(data.lnOrder[1]==B_SPOT)&&(data.lnOrder[2]==A_SPOT) | 
| lilac0112_1 | 23:df68f1a2c226 | 211 | ){ | 
| lilac0112_1 | 23:df68f1a2c226 | 212 | *y = LineReturn[4]; | 
| lilac0112_1 | 23:df68f1a2c226 | 213 | data.lnStop[Y_LINE]=0; | 
| lilac0112_1 | 23:df68f1a2c226 | 214 | } | 
| lilac0112_1 | 23:df68f1a2c226 | 215 | else if( | 
| lilac0112_1 | 23:df68f1a2c226 | 216 | (data.lnOrder[0]==A_SPOT)&&(data.lnOrder[1]==B_SPOT)&&(data.lnOrder[2]==C_SPOT)|| | 
| lilac0112_1 | 23:df68f1a2c226 | 217 | (data.lnOrder[0]==B_SPOT)&&(data.lnOrder[1]==A_SPOT)&&(data.lnOrder[2]==C_SPOT) | 
| lilac0112_1 | 23:df68f1a2c226 | 218 | ){ | 
| lilac0112_1 | 23:df68f1a2c226 | 219 | *y = -LineReturn[4]; | 
| lilac0112_1 | 23:df68f1a2c226 | 220 | data.lnStop[Y_LINE]=0; | 
| lilac0112_1 | 23:df68f1a2c226 | 221 | } | 
| lilac0112_1 | 23:df68f1a2c226 | 222 | else{ | 
| lilac0112_1 | 23:df68f1a2c226 | 223 | *y = 0; | 
| lilac0112_1 | 23:df68f1a2c226 | 224 | data.lnStop[Y_LINE]=0; | 
| lilac0112_1 | 23:df68f1a2c226 | 225 | } | 
| lilac0112_1 | 13:b20921316f3c | 226 | } | 
| lilac0112_1 | 12:bee8f883c33a | 227 | } | 
| lilac0112_1 | 17:cc862ecf9812 | 228 | //none | 
| lilac0112_1 | 17:cc862ecf9812 | 229 | if((LinePingState[L_PING]==1)&&(LinePingState[R_PING]==1)&&(LinePingState[F_PING]==1)&&(LinePingState[B_PING]==1)){ | 
| lilac0112_1 | 17:cc862ecf9812 | 230 | //turn! | 
| lilac0112_1 | 12:bee8f883c33a | 231 | } | 
| lilac0112_1 | 13:b20921316f3c | 232 | |
| lilac0112_1 | 17:cc862ecf9812 | 233 | } | 
| lilac0112_1 | 17:cc862ecf9812 | 234 | else{//data.FieldSpot==LINE_INSIDE | 
| lilac0112_1 | 17:cc862ecf9812 | 235 | |
| lilac0112_1 | 17:cc862ecf9812 | 236 | data.ReturnDir[X_LINE]=LINE_EMPTY; | 
| lilac0112_1 | 17:cc862ecf9812 | 237 | data.ReturnDir[Y_LINE]=LINE_EMPTY; | 
| lilac0112_1 | 13:b20921316f3c | 238 | |
| lilac0112_1 | 12:bee8f883c33a | 239 | *x = 0; | 
| lilac0112_1 | 12:bee8f883c33a | 240 | *y = 0; | 
| lilac0112_1 | 12:bee8f883c33a | 241 | |
| lilac0112_1 | 12:bee8f883c33a | 242 | //line間際の復帰力以外の力を作用させるか否か | 
| lilac0112_1 | 12:bee8f883c33a | 243 | data.lnStop[X_LINE]=1; | 
| lilac0112_1 | 12:bee8f883c33a | 244 | data.lnStop[Y_LINE]=1; | 
| lilac0112_1 | 12:bee8f883c33a | 245 | } | 
| lilac0112_1 | 12:bee8f883c33a | 246 | } | 
| lilac0112_1 | 18:3a42a931c95a | 247 | void LineJudgeReset(double pow_x, double pow_y, double *x, double *y){ | 
| lilac0112_1 | 18:3a42a931c95a | 248 | //static uint8_t NewLineCorner[4]={LINE_EMPTY, LINE_EMPTY, LINE_EMPTY, LINE_EMPTY}; | 
| lilac0112_1 | 18:3a42a931c95a | 249 | //static uint8_t LastLineCorner[4]={LINE_EMPTY, LINE_EMPTY, LINE_EMPTY, LINE_EMPTY}; | 
| lilac0112_1 | 18:3a42a931c95a | 250 | |
| lilac0112_1 | 18:3a42a931c95a | 251 | if((/*data.lnRaw==0*/1)&&(data.lnHold==7)){ | 
| lilac0112_1 | 16:4fadb7a87497 | 252 | if(data.FieldSpot==LINE_INSIDE){ | 
| lilac0112_1 | 18:3a42a931c95a | 253 | |
| lilac0112_1 | 14:b510adcb6065 | 254 | data.lnCorner[L_LINE] = (data.ping[L_PING]<OutToWall[X_PING]); | 
| lilac0112_1 | 14:b510adcb6065 | 255 | data.lnCorner[R_LINE] = (data.ping[R_PING]<OutToWall[X_PING]); | 
| lilac0112_1 | 14:b510adcb6065 | 256 | data.lnCorner[F_LINE] = (data.ping[F_PING]<OutToWall[Y_PING]); | 
| lilac0112_1 | 14:b510adcb6065 | 257 | data.lnCorner[B_LINE] = (data.ping[B_PING]<OutToWall[Y_PING]); | 
| lilac0112_1 | 14:b510adcb6065 | 258 | if( | 
| lilac0112_1 | 14:b510adcb6065 | 259 | (data.lnCorner[L_LINE])|| | 
| lilac0112_1 | 14:b510adcb6065 | 260 | (data.lnCorner[R_LINE])|| | 
| lilac0112_1 | 14:b510adcb6065 | 261 | (data.lnCorner[F_LINE])|| | 
| lilac0112_1 | 14:b510adcb6065 | 262 | (data.lnCorner[B_LINE]) | 
| lilac0112_1 | 14:b510adcb6065 | 263 | ){ | 
| lilac0112_1 | 18:3a42a931c95a | 264 | |
| lilac0112_1 | 16:4fadb7a87497 | 265 | data.NonWall[L_LINE] = (data.ping[L_PING]>WhiteToWall[X_PING]); | 
| lilac0112_1 | 16:4fadb7a87497 | 266 | data.NonWall[R_LINE] = (data.ping[R_PING]>WhiteToWall[X_PING]); | 
| lilac0112_1 | 16:4fadb7a87497 | 267 | data.NonWall[F_LINE] = (data.ping[F_PING]>WhiteToWall[Y_PING]); | 
| lilac0112_1 | 16:4fadb7a87497 | 268 | data.NonWall[B_LINE] = (data.ping[B_PING]>WhiteToWall[Y_PING]); | 
| lilac0112_1 | 18:3a42a931c95a | 269 | |
| lilac0112_1 | 18:3a42a931c95a | 270 | |
| lilac0112_1 | 18:3a42a931c95a | 271 | |
| lilac0112_1 | 18:3a42a931c95a | 272 | /*LastLineCorner[L_LINE]=NewLineCorner[L_LINE]; | 
| lilac0112_1 | 18:3a42a931c95a | 273 | LastLineCorner[R_LINE]=NewLineCorner[R_LINE]; | 
| lilac0112_1 | 18:3a42a931c95a | 274 | LastLineCorner[F_LINE]=NewLineCorner[F_LINE]; | 
| lilac0112_1 | 18:3a42a931c95a | 275 | LastLineCorner[B_LINE]=NewLineCorner[B_LINE]; | 
| lilac0112_1 | 18:3a42a931c95a | 276 | |
| lilac0112_1 | 18:3a42a931c95a | 277 | NewLineCorner[L_LINE]=data.lnCorner[L_LINE]; | 
| lilac0112_1 | 18:3a42a931c95a | 278 | NewLineCorner[R_LINE]=data.lnCorner[R_LINE]; | 
| lilac0112_1 | 18:3a42a931c95a | 279 | NewLineCorner[F_LINE]=data.lnCorner[F_LINE]; | 
| lilac0112_1 | 18:3a42a931c95a | 280 | NewLineCorner[B_LINE]=data.lnCorner[B_LINE]; | 
| lilac0112_1 | 18:3a42a931c95a | 281 | |
| lilac0112_1 | 18:3a42a931c95a | 282 | if( | 
| lilac0112_1 | 18:3a42a931c95a | 283 | (LastLineCorner[L_LINE]==NewLineCorner[L_LINE])&& | 
| lilac0112_1 | 18:3a42a931c95a | 284 | (LastLineCorner[R_LINE]==NewLineCorner[R_LINE])&& | 
| lilac0112_1 | 18:3a42a931c95a | 285 | (LastLineCorner[F_LINE]==NewLineCorner[F_LINE])&& | 
| lilac0112_1 | 18:3a42a931c95a | 286 | (LastLineCorner[B_LINE]==NewLineCorner[B_LINE]) | 
| lilac0112_1 | 18:3a42a931c95a | 287 | ){ | 
| lilac0112_1 | 18:3a42a931c95a | 288 | data.lnRepeat++; | 
| lilac0112_1 | 18:3a42a931c95a | 289 | } | 
| lilac0112_1 | 18:3a42a931c95a | 290 | else{ | 
| lilac0112_1 | 18:3a42a931c95a | 291 | data.lnRepeat=0; | 
| lilac0112_1 | 18:3a42a931c95a | 292 | }*/ | 
| lilac0112_1 | 18:3a42a931c95a | 293 | |
| lilac0112_1 | 16:4fadb7a87497 | 294 | data.FieldSpot = LINE_OUTSIDE; | 
| lilac0112_1 | 14:b510adcb6065 | 295 | LineLiberate(); | 
| lilac0112_1 | 14:b510adcb6065 | 296 | } | 
| lilac0112_1 | 14:b510adcb6065 | 297 | } | 
| lilac0112_1 | 16:4fadb7a87497 | 298 | else if(data.FieldSpot==LINE_OUTSIDE){ | 
| lilac0112_1 | 18:3a42a931c95a | 299 | if(data.lnRaw==0){ | 
| lilac0112_1 | 18:3a42a931c95a | 300 | data.FieldSpot = LINE_INSIDE; | 
| lilac0112_1 | 18:3a42a931c95a | 301 | data.NonWall[L_LINE] = data.NonWall[R_LINE] = data.NonWall[F_LINE] = data.NonWall[B_LINE] = 0; | 
| lilac0112_1 | 18:3a42a931c95a | 302 | LineLiberate(); | 
| lilac0112_1 | 18:3a42a931c95a | 303 | LineRankClear(); | 
| lilac0112_1 | 18:3a42a931c95a | 304 | } | 
| lilac0112_1 | 14:b510adcb6065 | 305 | } | 
| lilac0112_1 | 14:b510adcb6065 | 306 | } | 
| lilac0112_1 | 16:4fadb7a87497 | 307 | if(data.FieldSpot == LINE_OUTSIDE){ | 
| lilac0112_1 | 16:4fadb7a87497 | 308 | if( | 
| lilac0112_1 | 16:4fadb7a87497 | 309 | ( | 
| lilac0112_1 | 16:4fadb7a87497 | 310 | (data.ping[L_PING]>=WhiteToWall[X_PING])|| | 
| lilac0112_1 | 16:4fadb7a87497 | 311 | (data.NonWall[L_LINE]==1)|| | 
| 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.NonWall[R_LINE]==1)|| | 
| lilac0112_1 | 16:4fadb7a87497 | 318 | ((data.lnOrder[0]==B_SPOT)&&(data.lnOrder[1]==C_SPOT)) | 
| lilac0112_1 | 16:4fadb7a87497 | 319 | //(data.lnOrder[0]==B_SPOT) | 
| lilac0112_1 | 16:4fadb7a87497 | 320 | )&& | 
| lilac0112_1 | 16:4fadb7a87497 | 321 | ( | 
| lilac0112_1 | 16:4fadb7a87497 | 322 | (data.ping[F_PING]>=WhiteToWall[Y_PING])|| | 
| lilac0112_1 | 16:4fadb7a87497 | 323 | (data.NonWall[F_LINE]==1)|| | 
| lilac0112_1 | 16:4fadb7a87497 | 324 | ((data.lnOrder[0]==C_SPOT)&&(data.lnOrder[1]==A_SPOT))|| | 
| lilac0112_1 | 16:4fadb7a87497 | 325 | ((data.lnOrder[0]==C_SPOT)&&(data.lnOrder[1]==B_SPOT)) | 
| lilac0112_1 | 16:4fadb7a87497 | 326 | )&& | 
| lilac0112_1 | 16:4fadb7a87497 | 327 | ((data.ping[B_PING]>=WhiteToWall[Y_PING])|| | 
| lilac0112_1 | 16:4fadb7a87497 | 328 | (data.NonWall[B_LINE]==1)|| | 
| lilac0112_1 | 16:4fadb7a87497 | 329 | ((data.lnOrder[0]==A_SPOT)&&(data.lnOrder[1]==B_SPOT))|| | 
| lilac0112_1 | 16:4fadb7a87497 | 330 | ((data.lnOrder[0]==B_SPOT)&&(data.lnOrder[1]==A_SPOT)) | 
| lilac0112_1 | 16:4fadb7a87497 | 331 | ) | 
| lilac0112_1 | 16:4fadb7a87497 | 332 | ){ | 
| lilac0112_1 | 16:4fadb7a87497 | 333 | data.FieldSpot = LINE_INSIDE; | 
| lilac0112_1 | 16:4fadb7a87497 | 334 | data.NonWall[L_LINE] = data.NonWall[R_LINE] = data.NonWall[F_LINE] = data.NonWall[B_LINE] = 0; | 
| lilac0112_1 | 16:4fadb7a87497 | 335 | LineLiberate(); | 
| lilac0112_1 | 16:4fadb7a87497 | 336 | LineRankClear(); | 
| lilac0112_1 | 13:b20921316f3c | 337 | } | 
| lilac0112_1 | 16:4fadb7a87497 | 338 | } | 
| lilac0112_1 | 16:4fadb7a87497 | 339 | if((data.FieldSpot == LINE_INSIDE)&&(0<data.lnHold)&&(data.lnHold<7)&&(data.lnRaw==0)){ | 
| lilac0112_1 | 16:4fadb7a87497 | 340 | if( | 
| lilac0112_1 | 16:4fadb7a87497 | 341 | ( | 
| lilac0112_1 | 16:4fadb7a87497 | 342 | (data.ping[L_PING]>=WhiteToWall[X_PING])|| | 
| lilac0112_1 | 16:4fadb7a87497 | 343 | ((data.lnOrder[0]==A_SPOT)&&(data.lnOrder[1]==C_SPOT)) | 
| lilac0112_1 | 16:4fadb7a87497 | 344 | //(data.lnOrder[0]==A_SPOT) | 
| lilac0112_1 | 16:4fadb7a87497 | 345 | )&& | 
| lilac0112_1 | 16:4fadb7a87497 | 346 | ( | 
| lilac0112_1 | 16:4fadb7a87497 | 347 | (data.ping[R_PING]>=WhiteToWall[X_PING])|| | 
| lilac0112_1 | 16:4fadb7a87497 | 348 | ((data.lnOrder[0]==B_SPOT)&&(data.lnOrder[1]==C_SPOT)) | 
| lilac0112_1 | 16:4fadb7a87497 | 349 | //(data.lnOrder[0]==B_SPOT) | 
| lilac0112_1 | 16:4fadb7a87497 | 350 | )&& | 
| lilac0112_1 | 16:4fadb7a87497 | 351 | ( | 
| lilac0112_1 | 16:4fadb7a87497 | 352 | (data.ping[F_PING]>=WhiteToWall[Y_PING])|| | 
| lilac0112_1 | 16:4fadb7a87497 | 353 | ((data.lnOrder[0]==C_SPOT)&&(data.lnOrder[1]==A_SPOT))|| | 
| lilac0112_1 | 16:4fadb7a87497 | 354 | ((data.lnOrder[0]==C_SPOT)&&(data.lnOrder[1]==B_SPOT)) | 
| lilac0112_1 | 16:4fadb7a87497 | 355 | )&& | 
| lilac0112_1 | 16:4fadb7a87497 | 356 | ((data.ping[B_PING]>=WhiteToWall[Y_PING])|| | 
| lilac0112_1 | 16:4fadb7a87497 | 357 | ((data.lnOrder[0]==A_SPOT)&&(data.lnOrder[1]==B_SPOT))|| | 
| lilac0112_1 | 16:4fadb7a87497 | 358 | ((data.lnOrder[0]==B_SPOT)&&(data.lnOrder[1]==A_SPOT)) | 
| lilac0112_1 | 16:4fadb7a87497 | 359 | ) | 
| lilac0112_1 | 18:3a42a931c95a | 360 | /*|| | 
| lilac0112_1 | 18:3a42a931c95a | 361 | ( | 
| lilac0112_1 | 18:3a42a931c95a | 362 | (data.ping[L_PING]>=GoalEdgeToWall[X_PING])&& | 
| lilac0112_1 | 18:3a42a931c95a | 363 | (data.ping[R_PING]>=GoalEdgeToWall[X_PING]) | 
| lilac0112_1 | 18:3a42a931c95a | 364 | )*/ | 
| lilac0112_1 | 16:4fadb7a87497 | 365 | ){ | 
| lilac0112_1 | 16:4fadb7a87497 | 366 | data.NonWall[L_LINE] = data.NonWall[R_LINE] = data.NonWall[F_LINE] = data.NonWall[B_LINE] = 0; | 
| lilac0112_1 | 16:4fadb7a87497 | 367 | LineLiberate(); | 
| lilac0112_1 | 13:b20921316f3c | 368 | } | 
| lilac0112_1 | 13:b20921316f3c | 369 | } | 
| lilac0112_1 | 18:3a42a931c95a | 370 | /* | 
| lilac0112_1 | 18:3a42a931c95a | 371 | if( | 
| lilac0112_1 | 18:3a42a931c95a | 372 | (data.irNotice==IR_NONE)|| | 
| lilac0112_1 | 18:3a42a931c95a | 373 | (data.irNotice==IR_FAR)|| | 
| lilac0112_1 | 18:3a42a931c95a | 374 | ( | 
| lilac0112_1 | 18:3a42a931c95a | 375 | (data.ping[L_PING]>=GoalEdgeToWall[X_PING])&& | 
| lilac0112_1 | 18:3a42a931c95a | 376 | (data.ping[R_PING]>=GoalEdgeToWall[X_PING]) | 
| lilac0112_1 | 18:3a42a931c95a | 377 | ) | 
| lilac0112_1 | 18:3a42a931c95a | 378 | ){ | 
| lilac0112_1 | 18:3a42a931c95a | 379 | data.lnRepeat = 0; | 
| lilac0112_1 | 18:3a42a931c95a | 380 | |
| lilac0112_1 | 18:3a42a931c95a | 381 | data.lnCorner[L_LINE]=LINE_EMPTY; | 
| lilac0112_1 | 18:3a42a931c95a | 382 | data.lnCorner[R_LINE]=LINE_EMPTY; | 
| lilac0112_1 | 18:3a42a931c95a | 383 | data.lnCorner[F_LINE]=LINE_EMPTY; | 
| lilac0112_1 | 18:3a42a931c95a | 384 | data.lnCorner[B_LINE]=LINE_EMPTY; | 
| lilac0112_1 | 18:3a42a931c95a | 385 | } | 
| lilac0112_1 | 18:3a42a931c95a | 386 | data.lnRepeat=0; | 
| lilac0112_1 | 18:3a42a931c95a | 387 | if(data.lnRepeat>0){ | 
| lilac0112_1 | 18:3a42a931c95a | 388 | if( | 
| lilac0112_1 | 18:3a42a931c95a | 389 | ((pow_x>=0)&&(data.lnCorner[R_LINE]))|| | 
| lilac0112_1 | 18:3a42a931c95a | 390 | ((pow_x<0)&&(data.lnCorner[L_LINE])) | 
| lilac0112_1 | 18:3a42a931c95a | 391 | ){ | 
| lilac0112_1 | 18:3a42a931c95a | 392 | data.lnStay[X_LINE]=0; | 
| lilac0112_1 | 18:3a42a931c95a | 393 | } | 
| lilac0112_1 | 18:3a42a931c95a | 394 | else{ | 
| lilac0112_1 | 18:3a42a931c95a | 395 | data.lnStay[X_LINE]=1; | 
| lilac0112_1 | 18:3a42a931c95a | 396 | } | 
| lilac0112_1 | 18:3a42a931c95a | 397 | if( | 
| lilac0112_1 | 18:3a42a931c95a | 398 | ((pow_y>=0)&&(data.lnCorner[F_LINE]))|| | 
| lilac0112_1 | 18:3a42a931c95a | 399 | ((pow_y<0)&&(data.lnCorner[B_LINE])) | 
| lilac0112_1 | 18:3a42a931c95a | 400 | ){ | 
| lilac0112_1 | 18:3a42a931c95a | 401 | data.lnStay[Y_LINE]=0; | 
| lilac0112_1 | 18:3a42a931c95a | 402 | } | 
| lilac0112_1 | 18:3a42a931c95a | 403 | else{ | 
| lilac0112_1 | 18:3a42a931c95a | 404 | data.lnStay[Y_LINE]=1; | 
| lilac0112_1 | 18:3a42a931c95a | 405 | } | 
| lilac0112_1 | 18:3a42a931c95a | 406 | } | 
| lilac0112_1 | 18:3a42a931c95a | 407 | else{ | 
| lilac0112_1 | 18:3a42a931c95a | 408 | data.lnStay[X_LINE]=data.lnStay[Y_LINE]=1; | 
| lilac0112_1 | 18:3a42a931c95a | 409 | }*/ | 
| lilac0112_1 | 18:3a42a931c95a | 410 | |
| lilac0112_1 | 12:bee8f883c33a | 411 | } | 
| lilac0112_1 | 0:ea35c18c85fc | 412 | void modeAttack4(void){ | 
| lilac0112_1 | 10:6df631c39f9b | 413 | double ir_x_dir, ir_y_dir; | 
| lilac0112_1 | 11:3efae754e6ef | 414 | double ir_x_turn, ir_y_turn; | 
| lilac0112_1 | 11:3efae754e6ef | 415 | double ir_x, ir_y; | 
| lilac0112_1 | 13:b20921316f3c | 416 | |
| lilac0112_1 | 14:b510adcb6065 | 417 | double LineSlowPower[2]; | 
| lilac0112_1 | 14:b510adcb6065 | 418 | double LineReturnPower[2]; | 
| lilac0112_1 | 14:b510adcb6065 | 419 | |
| lilac0112_1 | 14:b510adcb6065 | 420 | //double pow_x, pow_y; | 
| lilac0112_1 | 10:6df631c39f9b | 421 | uint8_t ir_pow; | 
| lilac0112_1 | 10:6df631c39f9b | 422 | int vx,vy,vs; | 
| lilac0112_1 | 15:17502a27a60b | 423 | //static uint8_t data.FieldSpot; | 
| lilac0112_1 | 11:3efae754e6ef | 424 | |
| lilac0112_1 | 11:3efae754e6ef | 425 | |
| lilac0112_1 | 10:6df631c39f9b | 426 | if(sys.KickOffFlag==1){ | 
| lilac0112_1 | 10:6df631c39f9b | 427 | |
| lilac0112_1 | 18:3a42a931c95a | 428 | sys.IrBlind=0; | 
| lilac0112_1 | 10:6df631c39f9b | 429 | sys.LineBlind=0; | 
| lilac0112_1 | 10:6df631c39f9b | 430 | sys.PingBlind=0; | 
| lilac0112_1 | 10:6df631c39f9b | 431 | |
| lilac0112_1 | 19:967207de919d | 432 | sys.HomeBlind=1; | 
| lilac0112_1 | 21:378470320524 | 433 | sys.DriBlind=1; | 
| lilac0112_1 | 19:967207de919d | 434 | |
| lilac0112_1 | 19:967207de919d | 435 | |
| lilac0112_1 | 18:3a42a931c95a | 436 | sys.ir_pow_table = 0; | 
| lilac0112_1 | 18:3a42a931c95a | 437 | |
| lilac0112_1 | 18:3a42a931c95a | 438 | data.lnCorner[L_LINE]=data.lnCorner[R_LINE]=data.lnCorner[F_LINE]=data.lnCorner[B_LINE]=LINE_EMPTY; | 
| lilac0112_1 | 18:3a42a931c95a | 439 | data.lnRepeat = 0; | 
| lilac0112_1 | 18:3a42a931c95a | 440 | |
| lilac0112_1 | 18:3a42a931c95a | 441 | //data.lnStay[X_LINE]=data.lnStay[Y_LINE]=1; | 
| lilac0112_1 | 18:3a42a931c95a | 442 | data.lnStop[X_LINE]=data.lnStop[Y_LINE]=1; | 
| lilac0112_1 | 18:3a42a931c95a | 443 | |
| lilac0112_1 | 15:17502a27a60b | 444 | data.FieldSpot = LINE_INSIDE; | 
| lilac0112_1 | 14:b510adcb6065 | 445 | LineLiberate(); | 
| lilac0112_1 | 16:4fadb7a87497 | 446 | LineRankClear(); | 
| lilac0112_1 | 13:b20921316f3c | 447 | |
| lilac0112_1 | 19:967207de919d | 448 | cmps_set.AtkDeg=0; | 
| lilac0112_1 | 19:967207de919d | 449 | |
| lilac0112_1 | 19:967207de919d | 450 | //sys.BallHoldJudgeFlag=0; | 
| lilac0112_1 | 19:967207de919d | 451 | //sys.BallHoldFlag=0; | 
| lilac0112_1 | 19:967207de919d | 452 | |
| lilac0112_1 | 19:967207de919d | 453 | |
| lilac0112_1 | 10:6df631c39f9b | 454 | sys.KickOffFlag=0; | 
| lilac0112_1 | 0:ea35c18c85fc | 455 | } | 
| lilac0112_1 | 10:6df631c39f9b | 456 | //data | 
| lilac0112_1 | 19:967207de919d | 457 | if(sys.InfoFlag==1){ReadInfo();sys.InfoFlag=0;} | 
| lilac0112_1 | 19:967207de919d | 458 | |
| lilac0112_1 | 11:3efae754e6ef | 459 | data.lnRaw = LineRaw; | 
| lilac0112_1 | 11:3efae754e6ef | 460 | data.lnHold = LineHold; | 
| lilac0112_1 | 21:378470320524 | 461 | data.ball = ReadBall(); | 
| lilac0112_1 | 19:967207de919d | 462 | |
| lilac0112_1 | 19:967207de919d | 463 | /* | 
| lilac0112_1 | 19:967207de919d | 464 | if(sys.DriBlind==0){ | 
| lilac0112_1 | 19:967207de919d | 465 | if((data.ball==1)&&(sys.BallHoldJudgeFlag==0)){ | 
| lilac0112_1 | 19:967207de919d | 466 | sys.BallHoldJudgeFlag=1; | 
| lilac0112_1 | 19:967207de919d | 467 | Ball_catch.attach(&AdmitBallHold, 1.0); | 
| lilac0112_1 | 19:967207de919d | 468 | } | 
| lilac0112_1 | 19:967207de919d | 469 | |
| lilac0112_1 | 19:967207de919d | 470 | if((data.ball==0)&&(sys.BallHoldFlag==1)&&(sys.BallHoldGiveUpFlag==0)){ | 
| lilac0112_1 | 19:967207de919d | 471 | sys.BallHoldGiveUpFlag=1; | 
| lilac0112_1 | 19:967207de919d | 472 | Ball_leave.attach(&GiveUpBallHold, 1.0); | 
| lilac0112_1 | 19:967207de919d | 473 | } | 
| lilac0112_1 | 19:967207de919d | 474 | if((data.ball==1)&&(sys.BallHoldFlag==1)){ | 
| lilac0112_1 | 19:967207de919d | 475 | sys.BallHoldGiveUpFlag=0; | 
| lilac0112_1 | 19:967207de919d | 476 | Ball_leave.detach(); | 
| lilac0112_1 | 19:967207de919d | 477 | } | 
| lilac0112_1 | 19:967207de919d | 478 | |
| lilac0112_1 | 19:967207de919d | 479 | if((data.ping[B_PING]<30)&&(sys.BallHoldFlag==1)){ | 
| lilac0112_1 | 19:967207de919d | 480 | cmps_set.AtkDeg = 150; | 
| lilac0112_1 | 19:967207de919d | 481 | Kick_now.attach(&DriveSolenoid, .125); | 
| lilac0112_1 | 19:967207de919d | 482 | Front_now.attach(&FaceToFront, .75); | 
| lilac0112_1 | 19:967207de919d | 483 | |
| lilac0112_1 | 19:967207de919d | 484 | sys.BallHoldJudgeFlag=0; | 
| lilac0112_1 | 19:967207de919d | 485 | sys.BallHoldFlag=0; | 
| lilac0112_1 | 19:967207de919d | 486 | Ball_catch.detach(); | 
| lilac0112_1 | 19:967207de919d | 487 | Ball_leave.detach(); | 
| lilac0112_1 | 19:967207de919d | 488 | } | 
| lilac0112_1 | 19:967207de919d | 489 | } | 
| lilac0112_1 | 19:967207de919d | 490 | else{ | 
| lilac0112_1 | 19:967207de919d | 491 | sys.BallHoldFlag=0; | 
| lilac0112_1 | 19:967207de919d | 492 | }*/ | 
| lilac0112_1 | 19:967207de919d | 493 | |
| lilac0112_1 | 19:967207de919d | 494 | if(data.irNotice==IR_NONE){ | 
| lilac0112_1 | 19:967207de919d | 495 | sys.BackHomeFlag=(sys.HomeBlind==0); | 
| lilac0112_1 | 19:967207de919d | 496 | } | 
| lilac0112_1 | 19:967207de919d | 497 | else{ | 
| lilac0112_1 | 19:967207de919d | 498 | sys.BackHomeFlag=0; | 
| lilac0112_1 | 19:967207de919d | 499 | } | 
| lilac0112_1 | 10:6df631c39f9b | 500 | |
| lilac0112_1 | 18:3a42a931c95a | 501 | if(data.ping[B_PING]<=30){ | 
| lilac0112_1 | 18:3a42a931c95a | 502 | sys.ir_pow_table=1; | 
| lilac0112_1 | 18:3a42a931c95a | 503 | ir_x_dir = ir_move_val[1][data.irNotice][data.irPosition][IR_X_DIR]; | 
| lilac0112_1 | 18:3a42a931c95a | 504 | ir_y_dir = ir_move_val[1][data.irNotice][data.irPosition][IR_Y_DIR]; | 
| lilac0112_1 | 18:3a42a931c95a | 505 | ir_x_turn = ir_move_val[1][data.irNotice][data.irPosition][IR_X_TURN]; | 
| lilac0112_1 | 18:3a42a931c95a | 506 | ir_y_turn = ir_move_val[1][data.irNotice][data.irPosition][IR_Y_TURN]; | 
| lilac0112_1 | 18:3a42a931c95a | 507 | } | 
| lilac0112_1 | 18:3a42a931c95a | 508 | else{ | 
| lilac0112_1 | 18:3a42a931c95a | 509 | sys.ir_pow_table=0; | 
| lilac0112_1 | 18:3a42a931c95a | 510 | ir_x_dir = ir_move_val[0][data.irNotice][data.irPosition][IR_X_DIR]; | 
| lilac0112_1 | 18:3a42a931c95a | 511 | ir_y_dir = ir_move_val[0][data.irNotice][data.irPosition][IR_Y_DIR]; | 
| lilac0112_1 | 18:3a42a931c95a | 512 | ir_x_turn = ir_move_val[0][data.irNotice][data.irPosition][IR_X_TURN]; | 
| lilac0112_1 | 18:3a42a931c95a | 513 | ir_y_turn = ir_move_val[0][data.irNotice][data.irPosition][IR_Y_TURN]; | 
| lilac0112_1 | 18:3a42a931c95a | 514 | } | 
| lilac0112_1 | 18:3a42a931c95a | 515 | /* | 
| lilac0112_1 | 18:3a42a931c95a | 516 | ir_x_dir = ir_move_val[sys.ir_pow_table][data.irNotice][data.irPosition][IR_X_DIR]; | 
| lilac0112_1 | 18:3a42a931c95a | 517 | ir_y_dir = ir_move_val[sys.ir_pow_table][data.irNotice][data.irPosition][IR_Y_DIR]; | 
| lilac0112_1 | 18:3a42a931c95a | 518 | ir_x_turn = ir_move_val[sys.ir_pow_table][data.irNotice][data.irPosition][IR_X_TURN]; | 
| lilac0112_1 | 18:3a42a931c95a | 519 | ir_y_turn = ir_move_val[sys.ir_pow_table][data.irNotice][data.irPosition][IR_Y_TURN]; | 
| lilac0112_1 | 18:3a42a931c95a | 520 | */ | 
| lilac0112_1 | 18:3a42a931c95a | 521 | /* | 
| lilac0112_1 | 10:6df631c39f9b | 522 | ir_x_dir = ir_move_val[0][data.irNotice][data.irPosition][IR_X_DIR]; | 
| lilac0112_1 | 10:6df631c39f9b | 523 | ir_y_dir = ir_move_val[0][data.irNotice][data.irPosition][IR_Y_DIR]; | 
| lilac0112_1 | 10:6df631c39f9b | 524 | ir_x_turn = ir_move_val[0][data.irNotice][data.irPosition][IR_X_TURN]; | 
| lilac0112_1 | 10:6df631c39f9b | 525 | ir_y_turn = ir_move_val[0][data.irNotice][data.irPosition][IR_Y_TURN]; | 
| lilac0112_1 | 18:3a42a931c95a | 526 | */ | 
| lilac0112_1 | 18:3a42a931c95a | 527 | |
| lilac0112_1 | 10:6df631c39f9b | 528 | if(data.irNotice==IR_CLOSER){ | 
| lilac0112_1 | 10:6df631c39f9b | 529 | ir_pow = sys.s_pow; | 
| lilac0112_1 | 10:6df631c39f9b | 530 | } | 
| lilac0112_1 | 10:6df631c39f9b | 531 | else if(data.irNotice==IR_CLOSE){ | 
| lilac0112_1 | 10:6df631c39f9b | 532 | ir_pow = sys.m_pow; | 
| lilac0112_1 | 10:6df631c39f9b | 533 | } | 
| lilac0112_1 | 10:6df631c39f9b | 534 | else if(data.irNotice==IR_FAR){ | 
| lilac0112_1 | 10:6df631c39f9b | 535 | ir_pow = sys.l_pow; | 
| lilac0112_1 | 10:6df631c39f9b | 536 | } | 
| lilac0112_1 | 10:6df631c39f9b | 537 | else{//data.irNotice==IR_NONE | 
| lilac0112_1 | 10:6df631c39f9b | 538 | ir_pow = 0; | 
| lilac0112_1 | 10:6df631c39f9b | 539 | } | 
| lilac0112_1 | 21:378470320524 | 540 | if((sys.DriBlind==0)&&(data.irNotice==IR_CLOSER)&&(data.irValPhase[IR_SHORT]==DIS_0)&&((data.irPosition==10)||(data.irPosition==11)||(data.irPosition==12))){ | 
| lilac0112_1 | 19:967207de919d | 541 | sys.DribbleFlag=1; | 
| lilac0112_1 | 21:378470320524 | 542 | //if(sys.BallHoldFlag==0){ | 
| lilac0112_1 | 21:378470320524 | 543 | ir_pow=20; | 
| lilac0112_1 | 21:378470320524 | 544 | //} | 
| lilac0112_1 | 19:967207de919d | 545 | /*if(cmps_set.AtkDeg==0){ | 
| lilac0112_1 | 19:967207de919d | 546 | if(data.irPosition==10) cmps_set.AtkDeg=30; | 
| lilac0112_1 | 19:967207de919d | 547 | if(data.irPosition==11) cmps_set.AtkDeg=0; | 
| lilac0112_1 | 19:967207de919d | 548 | if(data.irPosition==12) cmps_set.AtkDeg=-30; | 
| lilac0112_1 | 19:967207de919d | 549 | } | 
| lilac0112_1 | 19:967207de919d | 550 | else if(cmps_set.AtkDeg>0){ | 
| lilac0112_1 | 19:967207de919d | 551 | if(data.irPosition==10) cmps_set.AtkDeg=0; | 
| lilac0112_1 | 19:967207de919d | 552 | if(data.irPosition==11) cmps_set.AtkDeg=30; | 
| lilac0112_1 | 19:967207de919d | 553 | if(data.irPosition==12) cmps_set.AtkDeg=0; | 
| lilac0112_1 | 19:967207de919d | 554 | |
| lilac0112_1 | 19:967207de919d | 555 | } | 
| lilac0112_1 | 19:967207de919d | 556 | else if(cmps_set.AtkDeg<0){ | 
| lilac0112_1 | 19:967207de919d | 557 | if(data.irPosition==10) cmps_set.AtkDeg=0; | 
| lilac0112_1 | 19:967207de919d | 558 | if(data.irPosition==11) cmps_set.AtkDeg=-30; | 
| lilac0112_1 | 19:967207de919d | 559 | if(data.irPosition==12) cmps_set.AtkDeg=0; | 
| lilac0112_1 | 19:967207de919d | 560 | }*/ | 
| lilac0112_1 | 19:967207de919d | 561 | } | 
| lilac0112_1 | 19:967207de919d | 562 | else{ | 
| lilac0112_1 | 19:967207de919d | 563 | sys.DribbleFlag=0; | 
| lilac0112_1 | 19:967207de919d | 564 | cmps_set.AtkDeg=0; | 
| lilac0112_1 | 19:967207de919d | 565 | |
| lilac0112_1 | 19:967207de919d | 566 | /*sys.BallHoldJudgeFlag=0; | 
| lilac0112_1 | 19:967207de919d | 567 | sys.BallHoldFlag=0; | 
| lilac0112_1 | 19:967207de919d | 568 | Ball_catch.detach(); | 
| lilac0112_1 | 19:967207de919d | 569 | Ball_leave.detach();*/ | 
| lilac0112_1 | 19:967207de919d | 570 | } | 
| lilac0112_1 | 19:967207de919d | 571 | |
| lilac0112_1 | 19:967207de919d | 572 | if(sys.IrBlind==1) ir_pow=0; | 
| lilac0112_1 | 19:967207de919d | 573 | |
| lilac0112_1 | 18:3a42a931c95a | 574 | |
| lilac0112_1 | 18:3a42a931c95a | 575 | if((data.ping[R_PING]<data.ping[L_PING])&&(data.irPosition==17)){ | 
| lilac0112_1 | 18:3a42a931c95a | 576 | ir_x_turn = -ir_x_turn; | 
| lilac0112_1 | 18:3a42a931c95a | 577 | ir_y_turn = -ir_y_turn; | 
| lilac0112_1 | 18:3a42a931c95a | 578 | } | 
| lilac0112_1 | 10:6df631c39f9b | 579 | |
| lilac0112_1 | 11:3efae754e6ef | 580 | ir_x = (ir_x_dir + ir_x_turn); | 
| lilac0112_1 | 11:3efae754e6ef | 581 | ir_y = (ir_y_dir + ir_y_turn); | 
| lilac0112_1 | 11:3efae754e6ef | 582 | |
| lilac0112_1 | 14:b510adcb6065 | 583 | if(sys.LineBlind==1){ | 
| lilac0112_1 | 14:b510adcb6065 | 584 | |
| lilac0112_1 | 14:b510adcb6065 | 585 | LineSlowPower[X_LINE] = 1.0; | 
| lilac0112_1 | 14:b510adcb6065 | 586 | LineSlowPower[Y_LINE] = 1.0; | 
| lilac0112_1 | 14:b510adcb6065 | 587 | |
| lilac0112_1 | 14:b510adcb6065 | 588 | LineReturnPower[X_LINE] = 0.0; | 
| lilac0112_1 | 14:b510adcb6065 | 589 | LineReturnPower[Y_LINE] = 0.0; | 
| lilac0112_1 | 14:b510adcb6065 | 590 | |
| lilac0112_1 | 14:b510adcb6065 | 591 | data.lnStop[X_LINE] = 1; | 
| lilac0112_1 | 14:b510adcb6065 | 592 | data.lnStop[Y_LINE] = 1; | 
| lilac0112_1 | 14:b510adcb6065 | 593 | |
| lilac0112_1 | 15:17502a27a60b | 594 | data.FieldSpot = LINE_INSIDE; | 
| lilac0112_1 | 14:b510adcb6065 | 595 | } | 
| lilac0112_1 | 14:b510adcb6065 | 596 | else{ | 
| lilac0112_1 | 18:3a42a931c95a | 597 | LineJudgeReset(ir_x, ir_y, &LineSlowPower[X_LINE], &LineSlowPower[Y_LINE]); | 
| lilac0112_1 | 16:4fadb7a87497 | 598 | |
| lilac0112_1 | 18:3a42a931c95a | 599 | LineJudgeSlow(ir_x, ir_y, &LineSlowPower[X_LINE], &LineSlowPower[Y_LINE]); | 
| lilac0112_1 | 18:3a42a931c95a | 600 | LineJudgeReturn(ir_x*LineSlowPower[X_LINE], ir_y*LineSlowPower[Y_LINE], &LineReturnPower[X_LINE], &LineReturnPower[Y_LINE]); | 
| lilac0112_1 | 18:3a42a931c95a | 601 | /* | 
| lilac0112_1 | 14:b510adcb6065 | 602 | LineSlowPower[X_LINE] = 1.0; | 
| lilac0112_1 | 14:b510adcb6065 | 603 | LineSlowPower[Y_LINE] = 1.0; | 
| lilac0112_1 | 18:3a42a931c95a | 604 | |
| lilac0112_1 | 14:b510adcb6065 | 605 | LineReturnPower[X_LINE] = 0.0; | 
| lilac0112_1 | 14:b510adcb6065 | 606 | LineReturnPower[Y_LINE] = 0.0; | 
| lilac0112_1 | 14:b510adcb6065 | 607 | |
| lilac0112_1 | 14:b510adcb6065 | 608 | data.lnStop[X_LINE] = 1; | 
| lilac0112_1 | 14:b510adcb6065 | 609 | data.lnStop[Y_LINE] = 1; | 
| lilac0112_1 | 17:cc862ecf9812 | 610 | */ | 
| lilac0112_1 | 14:b510adcb6065 | 611 | |
| lilac0112_1 | 14:b510adcb6065 | 612 | } | 
| lilac0112_1 | 19:967207de919d | 613 | //if(data.FieldSpot==LINE_OUTSIDE) LED = 0x9; | 
| lilac0112_1 | 19:967207de919d | 614 | //if(data.FieldSpot==LINE_INSIDE) LED = 0x6; | 
| lilac0112_1 | 19:967207de919d | 615 | |
| lilac0112_1 | 19:967207de919d | 616 | //LED = 0xFF*sys.BallHoldFlag; | 
| lilac0112_1 | 19:967207de919d | 617 | |
| lilac0112_1 | 21:378470320524 | 618 | //LED = 0xFF*(data.ping[B_PING]<30); | 
| lilac0112_1 | 14:b510adcb6065 | 619 | |
| lilac0112_1 | 16:4fadb7a87497 | 620 | //LED = ((data.lnOrder[0]!=LINE_EMPTY)<<2) | ((data.lnOrder[1]!=LINE_EMPTY)<<1) | ((data.lnOrder[2]!=LINE_EMPTY)<<0); | 
| lilac0112_1 | 14:b510adcb6065 | 621 | |
| lilac0112_1 | 14:b510adcb6065 | 622 | //else LED = 0xA; | 
| lilac0112_1 | 14:b510adcb6065 | 623 | //LED = LineHold; | 
| lilac0112_1 | 14:b510adcb6065 | 624 | |
| lilac0112_1 | 18:3a42a931c95a | 625 | vx = (ir_pow*ir_x)*data.lnStop[X_LINE]*(/*data.lnStay[X_LINE]*/1)*LineSlowPower[X_LINE] + LineReturnPower[X_LINE]; | 
| lilac0112_1 | 18:3a42a931c95a | 626 | vy = (ir_pow*ir_y)*data.lnStop[Y_LINE]*(/*data.lnStay[X_LINE]*/1)*LineSlowPower[Y_LINE] + LineReturnPower[Y_LINE]; | 
| lilac0112_1 | 10:6df631c39f9b | 627 | vs = cmps_set.OutputPID; | 
| lilac0112_1 | 10:6df631c39f9b | 628 | move( | 
| lilac0112_1 | 10:6df631c39f9b | 629 | vx, | 
| lilac0112_1 | 10:6df631c39f9b | 630 | vy, | 
| lilac0112_1 | 10:6df631c39f9b | 631 | vs | 
| lilac0112_1 | 10:6df631c39f9b | 632 | ); | 
| lilac0112_1 | 10:6df631c39f9b | 633 | if(sys.MotorFlag==1){tx_motor();sys.MotorFlag=0;} | 
| lilac0112_1 | 0:ea35c18c85fc | 634 | if(sys.stopflag==1){ | 
| lilac0112_1 | 10:6df631c39f9b | 635 | |
| lilac0112_1 | 0:ea35c18c85fc | 636 | //停止処理 | 
| lilac0112_1 | 0:ea35c18c85fc | 637 | } | 
| lilac0112_1 | 0:ea35c18c85fc | 638 | return; | 
| lilac0112_1 | 0:ea35c18c85fc | 639 | } | 
| lilac0112_1 | 0:ea35c18c85fc | 640 | void modeAttack5(void){ | 
| lilac0112_1 | 21:378470320524 | 641 | /*if(sys.IrFlag==1){ | 
| lilac0112_1 | 0:ea35c18c85fc | 642 | ReadIr(); | 
| lilac0112_1 | 0:ea35c18c85fc | 643 | sys.IrFlag=0; | 
| lilac0112_1 | 0:ea35c18c85fc | 644 | } | 
| lilac0112_1 | 0:ea35c18c85fc | 645 | if(sys.PidFlag==1){ | 
| lilac0112_1 | 0:ea35c18c85fc | 646 | PidUpdate(); | 
| lilac0112_1 | 0:ea35c18c85fc | 647 | sys.PidFlag=0; | 
| lilac0112_1 | 21:378470320524 | 648 | }*/ | 
| lilac0112_1 | 10:6df631c39f9b | 649 | move(0,0,cmps_set.OutputPID); | 
| lilac0112_1 | 0:ea35c18c85fc | 650 | if(sys.MotorFlag==1){ | 
| lilac0112_1 | 14:b510adcb6065 | 651 | //LED[0] = 1; | 
| lilac0112_1 | 14:b510adcb6065 | 652 | //LED[1] = 0; | 
| lilac0112_1 | 0:ea35c18c85fc | 653 | tx_motor(); | 
| lilac0112_1 | 0:ea35c18c85fc | 654 | sys.MotorFlag=0; | 
| lilac0112_1 | 0:ea35c18c85fc | 655 | } | 
| lilac0112_1 | 5:5ff3a7d5d8c2 | 656 | else{ | 
| lilac0112_1 | 14:b510adcb6065 | 657 | //LED[0] = 0; | 
| lilac0112_1 | 14:b510adcb6065 | 658 | //LED[1] = 1; | 
| lilac0112_1 | 5:5ff3a7d5d8c2 | 659 | } | 
| lilac0112_1 | 0:ea35c18c85fc | 660 | if(sys.stopflag==1){ | 
| lilac0112_1 | 0:ea35c18c85fc | 661 | //停止処理 | 
| lilac0112_1 | 0:ea35c18c85fc | 662 | } | 
| lilac0112_1 | 0:ea35c18c85fc | 663 | return; | 
| lilac0112_1 | 0:ea35c18c85fc | 664 | } |