ジャパンオープン用のメインプログラム

Dependencies:   mbed AQM1602 HMC6352 PID

Committer:
lilac0112_1
Date:
Wed Mar 16 07:55:15 2016 +0000
Revision:
20:d69ce8f47f1d
Parent:
19:967207de919d
Child:
21:378470320524
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 //line
lilac0112_1 0:ea35c18c85fc 5 void ReadLine(void){
lilac0112_1 0:ea35c18c85fc 6 static uint8_t line_buf[3]={0,0,0};
lilac0112_1 0:ea35c18c85fc 7 wait_us(100);
lilac0112_1 0:ea35c18c85fc 8 if(Line[0].read()==1) line_buf[0] = 100;
lilac0112_1 2:635947de1583 9 if(line_buf[0]==0) data.lnFlag[0]=0;
lilac0112_1 2:635947de1583 10 else data.lnFlag[0]=1;
lilac0112_1 0:ea35c18c85fc 11 if(line_buf[0]>0) line_buf[0]--;
lilac0112_1 0:ea35c18c85fc 12
lilac0112_1 0:ea35c18c85fc 13 if(Line[1].read()==1) line_buf[1] = 100;
lilac0112_1 2:635947de1583 14 if(line_buf[1]==0) data.lnFlag[1]=0;
lilac0112_1 2:635947de1583 15 else data.lnFlag[1]=1;
lilac0112_1 0:ea35c18c85fc 16 if(line_buf[1]>0) line_buf[1]--;
lilac0112_1 0:ea35c18c85fc 17
lilac0112_1 0:ea35c18c85fc 18 if(Line[2].read()==1) line_buf[2] = 100;
lilac0112_1 2:635947de1583 19 if(line_buf[2]==0) data.lnFlag[2]=0;
lilac0112_1 2:635947de1583 20 else data.lnFlag[2]=1;
lilac0112_1 0:ea35c18c85fc 21 if(line_buf[2]>0) line_buf[2]--;
lilac0112_1 0:ea35c18c85fc 22 }
lilac0112_1 16:4fadb7a87497 23 //line_hold
lilac0112_1 16:4fadb7a87497 24 void LineRanking_A(void){
lilac0112_1 16:4fadb7a87497 25 if(data.lnOrder[0]==LINE_EMPTY){
lilac0112_1 16:4fadb7a87497 26 data.lnOrder[0]=A_SPOT;
lilac0112_1 16:4fadb7a87497 27 }
lilac0112_1 16:4fadb7a87497 28 else if(data.lnOrder[1]==LINE_EMPTY){
lilac0112_1 16:4fadb7a87497 29 data.lnOrder[1]=A_SPOT;
lilac0112_1 16:4fadb7a87497 30 }
lilac0112_1 16:4fadb7a87497 31 else if(data.lnOrder[2]==LINE_EMPTY){
lilac0112_1 16:4fadb7a87497 32 data.lnOrder[2]=A_SPOT;
lilac0112_1 16:4fadb7a87497 33 }
lilac0112_1 16:4fadb7a87497 34 }
lilac0112_1 16:4fadb7a87497 35 void LineRanking_B(void){
lilac0112_1 16:4fadb7a87497 36 if(data.lnOrder[0]==LINE_EMPTY){
lilac0112_1 16:4fadb7a87497 37 data.lnOrder[0]=B_SPOT;
lilac0112_1 16:4fadb7a87497 38 }
lilac0112_1 16:4fadb7a87497 39 else if(data.lnOrder[1]==LINE_EMPTY){
lilac0112_1 16:4fadb7a87497 40 data.lnOrder[1]=B_SPOT;
lilac0112_1 16:4fadb7a87497 41 }
lilac0112_1 16:4fadb7a87497 42 else if(data.lnOrder[2]==LINE_EMPTY){
lilac0112_1 16:4fadb7a87497 43 data.lnOrder[2]=B_SPOT;
lilac0112_1 16:4fadb7a87497 44 }
lilac0112_1 16:4fadb7a87497 45 }
lilac0112_1 16:4fadb7a87497 46 void LineRanking_C(void){
lilac0112_1 16:4fadb7a87497 47 if(data.lnOrder[0]==LINE_EMPTY){
lilac0112_1 16:4fadb7a87497 48 data.lnOrder[0]=C_SPOT;
lilac0112_1 16:4fadb7a87497 49 }
lilac0112_1 16:4fadb7a87497 50 else if(data.lnOrder[1]==LINE_EMPTY){
lilac0112_1 16:4fadb7a87497 51 data.lnOrder[1]=C_SPOT;
lilac0112_1 16:4fadb7a87497 52 }
lilac0112_1 16:4fadb7a87497 53 else if(data.lnOrder[2]==LINE_EMPTY){
lilac0112_1 16:4fadb7a87497 54 data.lnOrder[2]=C_SPOT;
lilac0112_1 16:4fadb7a87497 55 }
lilac0112_1 16:4fadb7a87497 56 }
lilac0112_1 16:4fadb7a87497 57 void LineRankClear(void){
lilac0112_1 16:4fadb7a87497 58 data.lnOrder[0]=LINE_EMPTY;
lilac0112_1 16:4fadb7a87497 59 data.lnOrder[1]=LINE_EMPTY;
lilac0112_1 16:4fadb7a87497 60 data.lnOrder[2]=LINE_EMPTY;
lilac0112_1 16:4fadb7a87497 61
lilac0112_1 16:4fadb7a87497 62 if((LineHold==1)||(LineHold==2)||(LineHold==4)){
lilac0112_1 16:4fadb7a87497 63 if(LineHolding[A_SPOT].read()==1){
lilac0112_1 16:4fadb7a87497 64 data.lnOrder[0] = A_SPOT;
lilac0112_1 16:4fadb7a87497 65 }
lilac0112_1 16:4fadb7a87497 66 else if(LineHolding[B_SPOT].read()==1){
lilac0112_1 16:4fadb7a87497 67 data.lnOrder[0] = B_SPOT;
lilac0112_1 16:4fadb7a87497 68 }
lilac0112_1 16:4fadb7a87497 69 else if(LineHolding[C_SPOT].read()==1){
lilac0112_1 16:4fadb7a87497 70 data.lnOrder[0] = C_SPOT;
lilac0112_1 16:4fadb7a87497 71 }
lilac0112_1 20:d69ce8f47f1d 72 /*else if((LineHolding[A_SPOT].read()==1)&&(LineHolding[B_SPOT].read()==1)){
lilac0112_1 20:d69ce8f47f1d 73
lilac0112_1 20:d69ce8f47f1d 74 }*/
lilac0112_1 16:4fadb7a87497 75 }
lilac0112_1 16:4fadb7a87497 76 }
lilac0112_1 0:ea35c18c85fc 77 //ball
lilac0112_1 0:ea35c18c85fc 78 uint8_t ReadBall(void){//1or0
lilac0112_1 2:635947de1583 79 data.ball = !BallChecker;
lilac0112_1 2:635947de1583 80 return (data.ball>0);
lilac0112_1 0:ea35c18c85fc 81 }
lilac0112_1 0:ea35c18c85fc 82 void ReadGyro(void){
lilac0112_1 0:ea35c18c85fc 83 //Data can be got by interrupt.
lilac0112_1 0:ea35c18c85fc 84 }
lilac0112_1 0:ea35c18c85fc 85 void ReadCmps(void){
lilac0112_1 0:ea35c18c85fc 86 cmps_set.cmps = hmc.sample()/10.0;
lilac0112_1 0:ea35c18c85fc 87 }
lilac0112_1 10:6df631c39f9b 88 void ValidPing(void){
lilac0112_1 10:6df631c39f9b 89 if(sys.UswFlag==0){
lilac0112_1 10:6df631c39f9b 90 sys.UswFlag=1;
lilac0112_1 10:6df631c39f9b 91 }
lilac0112_1 10:6df631c39f9b 92 }
lilac0112_1 10:6df631c39f9b 93 void ValidPing2(void){
lilac0112_1 10:6df631c39f9b 94 if(sys.UswFlag2==0){
lilac0112_1 10:6df631c39f9b 95 sys.UswFlag2=1;
lilac0112_1 10:6df631c39f9b 96 }
lilac0112_1 10:6df631c39f9b 97 }
lilac0112_1 0:ea35c18c85fc 98 void ReadPing(void){
lilac0112_1 0:ea35c18c85fc 99 uint16_t spi_data;
lilac0112_1 0:ea35c18c85fc 100 //Ultra Sonic Wave
lilac0112_1 0:ea35c18c85fc 101 spi_ss[1]=0;
lilac0112_1 0:ea35c18c85fc 102 wait_us(200);
lilac0112_1 0:ea35c18c85fc 103
lilac0112_1 0:ea35c18c85fc 104 spi_data = spi.write(0xABCD);
lilac0112_1 0:ea35c18c85fc 105
lilac0112_1 0:ea35c18c85fc 106 wait_us(200);
lilac0112_1 0:ea35c18c85fc 107 spi_ss[1]=1;
lilac0112_1 0:ea35c18c85fc 108
lilac0112_1 2:635947de1583 109 data.ping[0] = (spi_data&0x00FF)>>0;
lilac0112_1 2:635947de1583 110 data.ping[1] = (spi_data&0xFF00)>>8;
lilac0112_1 0:ea35c18c85fc 111 }
lilac0112_1 10:6df631c39f9b 112 void ReadPing2(void){
lilac0112_1 0:ea35c18c85fc 113 uint16_t spi_data;
lilac0112_1 0:ea35c18c85fc 114 //Ultra Sonic Wave
lilac0112_1 0:ea35c18c85fc 115 spi_ss[0]=0;
lilac0112_1 0:ea35c18c85fc 116 wait_us(200);
lilac0112_1 0:ea35c18c85fc 117
lilac0112_1 0:ea35c18c85fc 118 spi_data = spi.write(0xABCD);
lilac0112_1 0:ea35c18c85fc 119
lilac0112_1 0:ea35c18c85fc 120 wait_us(200);
lilac0112_1 0:ea35c18c85fc 121 spi_ss[0]=1;
lilac0112_1 0:ea35c18c85fc 122
lilac0112_1 2:635947de1583 123 data.ping[2] = (spi_data&0x00FF)>>0;
lilac0112_1 2:635947de1583 124 data.ping[3] = (spi_data&0xFF00)>>8;
lilac0112_1 0:ea35c18c85fc 125 }
lilac0112_1 0:ea35c18c85fc 126 void ValidIr(void){
lilac0112_1 0:ea35c18c85fc 127 if(sys.IrFlag==0){
lilac0112_1 0:ea35c18c85fc 128 sys.IrFlag=1;
lilac0112_1 0:ea35c18c85fc 129 }
lilac0112_1 0:ea35c18c85fc 130 }
lilac0112_1 0:ea35c18c85fc 131 void ReadIr(void){
lilac0112_1 0:ea35c18c85fc 132 uint16_t spi_data;
lilac0112_1 0:ea35c18c85fc 133
lilac0112_1 0:ea35c18c85fc 134 //Ir
lilac0112_1 0:ea35c18c85fc 135 spi_ss[3]=0;
lilac0112_1 0:ea35c18c85fc 136 wait_us(200);
lilac0112_1 0:ea35c18c85fc 137
lilac0112_1 0:ea35c18c85fc 138 spi_data = spi.write(0xABCD);
lilac0112_1 0:ea35c18c85fc 139
lilac0112_1 0:ea35c18c85fc 140 wait_us(200);
lilac0112_1 0:ea35c18c85fc 141 spi_ss[3]=1;
lilac0112_1 2:635947de1583 142 /*
lilac0112_1 1:3e013ae7900d 143 //key/phaseL/phaseS/long/short/
lilac0112_1 1:3e013ae7900d 144 // 2/ 3/ 3/ 4/ 4/
lilac0112_1 2:635947de1583 145 data.irKey = (spi_data&0xC000)>>14;//1100000000000000
lilac0112_1 2:635947de1583 146 data.irValPhase[IR_LONG] = (spi_data&0x3800)>>11;//0011100000000000
lilac0112_1 2:635947de1583 147 data.irValPhase[IR_SHORT] = (spi_data&0x0700)>>8;///0000011100000000
lilac0112_1 2:635947de1583 148 data.irSpot[IR_LONG] = (spi_data&0x00F0)>>4;///0000000011110000
lilac0112_1 2:635947de1583 149 data.irSpot[IR_SHORT] = (spi_data&0x000F)>>0;///0000000000001111
lilac0112_1 2:635947de1583 150 */
lilac0112_1 0:ea35c18c85fc 151
lilac0112_1 2:635947de1583 152 //key/phaseL/phaseS/diffL/position/
lilac0112_1 2:635947de1583 153 // 2/ 3/ 3/ 3/ 5/
lilac0112_1 2:635947de1583 154 data.irKey = (spi_data&0xC000)>>14;//1100000000000000
lilac0112_1 2:635947de1583 155 data.irValPhase[IR_LONG] = (spi_data&0x3800)>>11;//0011100000000000
lilac0112_1 2:635947de1583 156 data.irValPhase[IR_SHORT] = (spi_data&0x0700)>>8;///0000011100000000
lilac0112_1 2:635947de1583 157 data.irDif[IR_LONG] = (spi_data&0x00E0)>>5;///0000000011100000
lilac0112_1 2:635947de1583 158 data.irPosition = (spi_data&0x001F)>>0;///0000000000011111
lilac0112_1 1:3e013ae7900d 159
lilac0112_1 2:635947de1583 160 if(data.irKey!=0x2) data.irNotice=IR_NONE;
lilac0112_1 2:635947de1583 161
lilac0112_1 2:635947de1583 162
lilac0112_1 2:635947de1583 163 if(data.irValPhase[IR_SHORT]>=DIS_7){
lilac0112_1 10:6df631c39f9b 164 if(data.irValPhase[IR_LONG]>=DIS_5){
lilac0112_1 2:635947de1583 165 data.irNotice=IR_NONE;
lilac0112_1 1:3e013ae7900d 166 }
lilac0112_1 1:3e013ae7900d 167 else{
lilac0112_1 2:635947de1583 168 if(data.irDif[IR_LONG]<=DIS_6){
lilac0112_1 2:635947de1583 169 data.irNotice=IR_NONE;
lilac0112_1 1:3e013ae7900d 170 }
lilac0112_1 1:3e013ae7900d 171 else{
lilac0112_1 2:635947de1583 172 data.irNotice=IR_FAR;
lilac0112_1 1:3e013ae7900d 173 }
lilac0112_1 1:3e013ae7900d 174 }
lilac0112_1 1:3e013ae7900d 175 }
lilac0112_1 2:635947de1583 176 else{
lilac0112_1 2:635947de1583 177 if(data.irValPhase[IR_SHORT]>=DIS_3){
lilac0112_1 2:635947de1583 178 data.irNotice = IR_CLOSE;
lilac0112_1 2:635947de1583 179 }
lilac0112_1 2:635947de1583 180 else{
lilac0112_1 2:635947de1583 181 data.irNotice = IR_CLOSER;
lilac0112_1 2:635947de1583 182 }
lilac0112_1 2:635947de1583 183 }
lilac0112_1 1:3e013ae7900d 184
lilac0112_1 2:635947de1583 185 /*if(data.irValPhase[IR_LONG]>=DIS_7){
lilac0112_1 2:635947de1583 186 data.irNotice=IR_NONE;
lilac0112_1 2:635947de1583 187 }
lilac0112_1 2:635947de1583 188 else{
lilac0112_1 2:635947de1583 189 if(data.irValPhase[IR_SHORT]>=DIS_7){
lilac0112_1 2:635947de1583 190 data.irNotice=IR_FAR;
lilac0112_1 2:635947de1583 191 }
lilac0112_1 2:635947de1583 192 else{
lilac0112_1 2:635947de1583 193 if(data.irValPhase[IR_LONG]>=DIS_4){
lilac0112_1 2:635947de1583 194 data.irNotice = IR_CLOSE;
lilac0112_1 2:635947de1583 195 }
lilac0112_1 2:635947de1583 196 else{
lilac0112_1 2:635947de1583 197 data.irNotice = IR_CLOSER;
lilac0112_1 2:635947de1583 198 }
lilac0112_1 2:635947de1583 199 }
lilac0112_1 2:635947de1583 200 }*/
lilac0112_1 2:635947de1583 201 /*
lilac0112_1 2:635947de1583 202 if(data.irNotice == IR_NONE) data.irPosition=11;
lilac0112_1 2:635947de1583 203 if(data.irNotice == IR_FAR) data.irPosition=data.irSpot[IR_LONG]-1;
lilac0112_1 2:635947de1583 204 if(data.irNotice == IR_CLOSE) data.irPosition=data.irSpot[IR_SHORT]+7;
lilac0112_1 2:635947de1583 205 if(data.irNotice == IR_CLOSER) data.irPosition=data.irSpot[IR_SHORT]+7;
lilac0112_1 2:635947de1583 206 */
lilac0112_1 5:5ff3a7d5d8c2 207 //LED[1] = LED[0];
lilac0112_1 5:5ff3a7d5d8c2 208 //LED[0] = !LED[0];
lilac0112_1 0:ea35c18c85fc 209 }
lilac0112_1 19:967207de919d 210 //info
lilac0112_1 19:967207de919d 211 void ValidInfo(void){
lilac0112_1 19:967207de919d 212 if(sys.InfoFlag==0){
lilac0112_1 19:967207de919d 213 sys.InfoFlag=1;
lilac0112_1 19:967207de919d 214 }
lilac0112_1 19:967207de919d 215 }
lilac0112_1 0:ea35c18c85fc 216 void ReadInfo(void){
lilac0112_1 19:967207de919d 217 ReadIr();
lilac0112_1 19:967207de919d 218 PidUpdate();
lilac0112_1 19:967207de919d 219 ReadPing();
lilac0112_1 19:967207de919d 220 ReadPing2();
lilac0112_1 0:ea35c18c85fc 221 }