CatPot 2015-2016 / Mbed 2 deprecated CatPot_2v10_T_Main

Dependencies:   mbed AQM1602 HMC6352 PID

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?

UserRevisionLine numberNew 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 }