Main Program

Dependencies:   mbed AQM1602 HMC6352 PID

Committer:
lilac0112_1
Date:
Thu Feb 25 06:12:47 2016 +0000
Revision:
45:c23f25c00d0d
Parent:
44:a793dd45f84c
Hokushinetsu(20:1)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lilac0112_1 19:342da3a5a474 1 #include "mbed.h"
lilac0112_1 19:342da3a5a474 2 #include "extern.h"
lilac0112_1 19:342da3a5a474 3
lilac0112_1 19:342da3a5a474 4 void CommandLoop(void){
lilac0112_1 19:342da3a5a474 5 uint8_t SwState,x=0,y=0, z;
lilac0112_1 19:342da3a5a474 6 uint8_t (*Function[STATE_NUM_Y])(uint8_t x) = {
lilac0112_1 19:342da3a5a474 7 LoopFunction0,
lilac0112_1 19:342da3a5a474 8 LoopFunction1,
lilac0112_1 19:342da3a5a474 9 LoopFunction2,
lilac0112_1 19:342da3a5a474 10 LoopFunction3,
lilac0112_1 19:342da3a5a474 11 LoopFunction4,
lilac0112_1 19:342da3a5a474 12 LoopFunction5,
lilac0112_1 19:342da3a5a474 13 LoopFunction6,
lilac0112_1 19:342da3a5a474 14 LoopFunction7,
lilac0112_1 19:342da3a5a474 15 LoopFunction8,
lilac0112_1 19:342da3a5a474 16 LoopFunction9,
lilac0112_1 19:342da3a5a474 17 LoopFunctionA,
lilac0112_1 19:342da3a5a474 18 LoopFunctionB,
lilac0112_1 19:342da3a5a474 19 LoopFunctionC,
lilac0112_1 19:342da3a5a474 20 LoopFunctionD,
lilac0112_1 19:342da3a5a474 21 LoopFunctionE,
lilac0112_1 19:342da3a5a474 22 LoopFunctionF
lilac0112_1 19:342da3a5a474 23 };
lilac0112_1 19:342da3a5a474 24 data.init_point_flag=0;
lilac0112_1 19:342da3a5a474 25 while(1){
lilac0112_1 19:342da3a5a474 26 SwState = ReadSw();
lilac0112_1 19:342da3a5a474 27 if(SwState == NONE){
lilac0112_1 19:342da3a5a474 28 if(x!=0){
lilac0112_1 19:342da3a5a474 29 z = (*Function[y])(x);
lilac0112_1 19:342da3a5a474 30 if(z==1){
lilac0112_1 27:769cb5a7ea37 31 if((x!=0)&&(data.init_point_flag==1)){
lilac0112_1 27:769cb5a7ea37 32 data.init_point_flag=0;
lilac0112_1 27:769cb5a7ea37 33 y = 1;
lilac0112_1 27:769cb5a7ea37 34 }
lilac0112_1 19:342da3a5a474 35 x=0;
lilac0112_1 19:342da3a5a474 36 Lcd.cls();
lilac0112_1 19:342da3a5a474 37 Lcd.locate(0, 0);
lilac0112_1 19:342da3a5a474 38 Lcd.print(lcdstr[y][0]);
lilac0112_1 19:342da3a5a474 39 Lcd.locate(7, 0);
lilac0112_1 19:342da3a5a474 40 Lcd.print(">");
lilac0112_1 19:342da3a5a474 41 Lcd.locate(9, 0);
lilac0112_1 19:342da3a5a474 42 if(x!=0) Lcd.print(lcdstr[y][x]);
lilac0112_1 19:342da3a5a474 43 }
lilac0112_1 19:342da3a5a474 44 //Z==1...Once
lilac0112_1 19:342da3a5a474 45 //Z==0...Endless
lilac0112_1 19:342da3a5a474 46 }
lilac0112_1 19:342da3a5a474 47 continue;
lilac0112_1 19:342da3a5a474 48 }
lilac0112_1 19:342da3a5a474 49 if(SwState == UP){
lilac0112_1 19:342da3a5a474 50 y += -1 + STATE_NUM_Y;
lilac0112_1 19:342da3a5a474 51 y %= STATE_NUM_Y;
lilac0112_1 19:342da3a5a474 52 x=0;
lilac0112_1 19:342da3a5a474 53 }
lilac0112_1 19:342da3a5a474 54 if(SwState == DOWN){
lilac0112_1 19:342da3a5a474 55 y++;
lilac0112_1 19:342da3a5a474 56 y %= STATE_NUM_Y;
lilac0112_1 19:342da3a5a474 57 x=0;
lilac0112_1 19:342da3a5a474 58 }
lilac0112_1 19:342da3a5a474 59 if(SwState == RIGHT){
lilac0112_1 19:342da3a5a474 60 if(lcdstr[y][1][0]==0) x=0;
lilac0112_1 19:342da3a5a474 61 else x++;
lilac0112_1 21:d69a8f3c76e1 62 if(x==STATE_NUM_X) x=0;
lilac0112_1 19:342da3a5a474 63 if(lcdstr[y][x][0]==0) x=0;
lilac0112_1 19:342da3a5a474 64 else x %= STATE_NUM_X;
lilac0112_1 19:342da3a5a474 65 }
lilac0112_1 19:342da3a5a474 66 if(SwState == LEFT){
lilac0112_1 19:342da3a5a474 67 if((x!=0)&&(data.init_point_flag==1)){
lilac0112_1 19:342da3a5a474 68 data.init_point_flag=0;
lilac0112_1 19:342da3a5a474 69 y = 1;
lilac0112_1 19:342da3a5a474 70 }
lilac0112_1 19:342da3a5a474 71 x=0;
lilac0112_1 19:342da3a5a474 72 }
lilac0112_1 19:342da3a5a474 73 Lcd.cls();
lilac0112_1 19:342da3a5a474 74 Lcd.locate(0, 0);
lilac0112_1 19:342da3a5a474 75 Lcd.print(lcdstr[y][0]);
lilac0112_1 19:342da3a5a474 76 Lcd.locate(7, 0);
lilac0112_1 19:342da3a5a474 77 Lcd.print(">");
lilac0112_1 19:342da3a5a474 78 Lcd.locate(9, 0);
lilac0112_1 19:342da3a5a474 79 if(x!=0) Lcd.print(lcdstr[y][x]);
lilac0112_1 19:342da3a5a474 80 }
lilac0112_1 19:342da3a5a474 81 }
lilac0112_1 19:342da3a5a474 82 uint8_t LoopFunction0(uint8_t x){
lilac0112_1 19:342da3a5a474 83 char buf[0x10];
lilac0112_1 32:247115c03176 84 if(x==1){
lilac0112_1 32:247115c03176 85 sprintf(buf, "Strategy:%2d", data.strategy);
lilac0112_1 32:247115c03176 86 Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0;
lilac0112_1 32:247115c03176 87 }
lilac0112_1 32:247115c03176 88 else{//x==2
lilac0112_1 32:247115c03176 89 sprintf(buf, "SeeYouAgain!");
lilac0112_1 32:247115c03176 90 Lcd.locate(0, 1);Lcd.print(buf);wait(0.5);
lilac0112_1 32:247115c03176 91 NVIC_SystemReset();
lilac0112_1 32:247115c03176 92 return 1;
lilac0112_1 32:247115c03176 93 }
lilac0112_1 19:342da3a5a474 94 }
lilac0112_1 19:342da3a5a474 95 uint8_t LoopFunction1(uint8_t x){
lilac0112_1 19:342da3a5a474 96 char buf[0x10];
lilac0112_1 19:342da3a5a474 97 sprintf(buf, "CatPot");
lilac0112_1 19:342da3a5a474 98 Lcd.locate(0, 1);Lcd.print(buf);
lilac0112_1 28:8ac6c3c1e643 99 data.strategy=0;
lilac0112_1 19:342da3a5a474 100 ActiveLoop();
lilac0112_1 19:342da3a5a474 101 return 1;
lilac0112_1 19:342da3a5a474 102 }
lilac0112_1 19:342da3a5a474 103 uint8_t LoopFunction2(uint8_t x){
lilac0112_1 19:342da3a5a474 104 char buf[0x10];
lilac0112_1 23:d95d8d3e89f3 105 ReadIr();
lilac0112_1 23:d95d8d3e89f3 106
lilac0112_1 23:d95d8d3e89f3 107 if(x==1) sprintf(buf, "SHRT:%2d, LNG:%2d", data.irSpot[0], data.irSpot[1]);
lilac0112_1 23:d95d8d3e89f3 108 if(x==2) sprintf(buf, "NOTE:%2d", data.irNotice);
lilac0112_1 26:fbb03281fc7d 109 if(x==3) sprintf(buf, "POSITION:%2d", data.irPosition);
lilac0112_1 22:a95f7c63af3c 110 Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0;
lilac0112_1 19:342da3a5a474 111 }
lilac0112_1 23:d95d8d3e89f3 112 uint8_t LoopFunction3(uint8_t x){
lilac0112_1 23:d95d8d3e89f3 113 char buf[0x10];
lilac0112_1 42:02aaa806d929 114 if(x==1){
lilac0112_1 42:02aaa806d929 115 sprintf(buf, "A:%1d B:%1d C:%1d ", Line[0].read(), Line[1].read(), Line[2].read());
lilac0112_1 42:02aaa806d929 116 Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0;
lilac0112_1 42:02aaa806d929 117 }
lilac0112_1 42:02aaa806d929 118 if(x==2){
lilac0112_1 42:02aaa806d929 119 ReadPing();
lilac0112_1 42:02aaa806d929 120 sprintf(buf, "L:%3d R:%3d", data.ping[L_PING], data.ping[R_PING]);
lilac0112_1 42:02aaa806d929 121 Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0;
lilac0112_1 42:02aaa806d929 122 }
lilac0112_1 44:a793dd45f84c 123 if(x==3){
lilac0112_1 44:a793dd45f84c 124 ReadIr();
lilac0112_1 44:a793dd45f84c 125 sprintf(buf, "IR_KEY:%2d", data.irKey);
lilac0112_1 44:a793dd45f84c 126 Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0;
lilac0112_1 44:a793dd45f84c 127 }
lilac0112_1 42:02aaa806d929 128 return 0;
lilac0112_1 23:d95d8d3e89f3 129 }
lilac0112_1 19:342da3a5a474 130 uint8_t LoopFunction4(uint8_t x){
lilac0112_1 19:342da3a5a474 131 char buf[0x10];
lilac0112_1 23:d95d8d3e89f3 132 PidUpdate();
lilac0112_1 24:9fb74ea3c25d 133 sprintf(buf, "In:%03.0f Out:%+02d", data.InputPID, data.OutputPID);
lilac0112_1 22:a95f7c63af3c 134 Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0;
lilac0112_1 19:342da3a5a474 135 }
lilac0112_1 22:a95f7c63af3c 136 uint8_t LoopFunction5(uint8_t x){
lilac0112_1 22:a95f7c63af3c 137 char buf[0x10];
lilac0112_1 22:a95f7c63af3c 138 sprintf(buf, "Enter");
lilac0112_1 22:a95f7c63af3c 139 Lcd.locate(0, 1);Lcd.print(buf);
lilac0112_1 22:a95f7c63af3c 140 hmc.setCalibrationMode(HMC6352_EXIT_CALIB);
lilac0112_1 22:a95f7c63af3c 141 return 1;
lilac0112_1 22:a95f7c63af3c 142 }
lilac0112_1 22:a95f7c63af3c 143 uint8_t LoopFunction6(uint8_t x){
lilac0112_1 22:a95f7c63af3c 144 char buf[0x10];
lilac0112_1 22:a95f7c63af3c 145 sprintf(buf, "Exit");
lilac0112_1 22:a95f7c63af3c 146 Lcd.locate(0, 1);Lcd.print(buf);
lilac0112_1 22:a95f7c63af3c 147 hmc.setCalibrationMode(HMC6352_ENTER_CALIB);
lilac0112_1 22:a95f7c63af3c 148 return 1;
lilac0112_1 22:a95f7c63af3c 149 }
lilac0112_1 27:769cb5a7ea37 150 uint8_t LoopFunction7(uint8_t x){
lilac0112_1 27:769cb5a7ea37 151 char buf[0x10];
lilac0112_1 27:769cb5a7ea37 152 data.init_point_flag=1;
lilac0112_1 27:769cb5a7ea37 153 sprintf(buf, "FaceToFront!");
lilac0112_1 27:769cb5a7ea37 154 Lcd.locate(0, 1);Lcd.print(buf);
lilac0112_1 27:769cb5a7ea37 155 for(int i=0; i<5; i++){
lilac0112_1 27:769cb5a7ea37 156 ReadCmps();
lilac0112_1 27:769cb5a7ea37 157 data.CmpsInitialValue = data.cmps;
lilac0112_1 27:769cb5a7ea37 158 wait_ms(100);
lilac0112_1 27:769cb5a7ea37 159 }
lilac0112_1 27:769cb5a7ea37 160 data.CmpsDiff = REFERENCE - data.cmps;
lilac0112_1 27:769cb5a7ea37 161 data.FrontDeg=0;
lilac0112_1 27:769cb5a7ea37 162 return 1;
lilac0112_1 27:769cb5a7ea37 163 }
lilac0112_1 28:8ac6c3c1e643 164 uint8_t LoopFunction8(uint8_t x){
lilac0112_1 28:8ac6c3c1e643 165 char buf[0x10];
lilac0112_1 45:c23f25c00d0d 166 if(x==1){
lilac0112_1 45:c23f25c00d0d 167 data.s_pow = 20;
lilac0112_1 45:c23f25c00d0d 168 data.l_pow = 20;
lilac0112_1 45:c23f25c00d0d 169 }
lilac0112_1 45:c23f25c00d0d 170 if(x==2){
lilac0112_1 45:c23f25c00d0d 171 data.s_pow = 30;
lilac0112_1 45:c23f25c00d0d 172 data.l_pow = 30;
lilac0112_1 45:c23f25c00d0d 173 }
lilac0112_1 45:c23f25c00d0d 174 if(x==3){
lilac0112_1 45:c23f25c00d0d 175 data.s_pow = 40;
lilac0112_1 45:c23f25c00d0d 176 data.l_pow = 40;
lilac0112_1 45:c23f25c00d0d 177 }
lilac0112_1 28:8ac6c3c1e643 178 sprintf(buf, "TuningS_power");
lilac0112_1 28:8ac6c3c1e643 179 Lcd.locate(0, 1);Lcd.print(buf);return 0;
lilac0112_1 28:8ac6c3c1e643 180 }
lilac0112_1 28:8ac6c3c1e643 181 uint8_t LoopFunction9(uint8_t x){
lilac0112_1 28:8ac6c3c1e643 182 char buf[0x10];
lilac0112_1 45:c23f25c00d0d 183 if(x==1){
lilac0112_1 45:c23f25c00d0d 184 data.s_pow = 20;
lilac0112_1 45:c23f25c00d0d 185 data.l_pow = 30;
lilac0112_1 45:c23f25c00d0d 186 }
lilac0112_1 45:c23f25c00d0d 187 if(x==2){
lilac0112_1 45:c23f25c00d0d 188 data.s_pow = 25;
lilac0112_1 45:c23f25c00d0d 189 data.l_pow = 35;
lilac0112_1 45:c23f25c00d0d 190 }
lilac0112_1 45:c23f25c00d0d 191 if(x==3){
lilac0112_1 45:c23f25c00d0d 192 data.s_pow = 35;
lilac0112_1 45:c23f25c00d0d 193 data.l_pow = 45;
lilac0112_1 45:c23f25c00d0d 194 }
lilac0112_1 28:8ac6c3c1e643 195 sprintf(buf, "TuningL_power");
lilac0112_1 28:8ac6c3c1e643 196 Lcd.locate(0, 1);Lcd.print(buf);return 0;
lilac0112_1 28:8ac6c3c1e643 197 }
lilac0112_1 27:769cb5a7ea37 198 uint8_t LoopFunctionA(uint8_t x){
lilac0112_1 27:769cb5a7ea37 199 char buf[0x10];
lilac0112_1 27:769cb5a7ea37 200 sprintf(buf, "SeeYouAgain!");
lilac0112_1 27:769cb5a7ea37 201 Lcd.locate(0, 1);Lcd.print(buf);wait(0.5);
lilac0112_1 27:769cb5a7ea37 202 NVIC_SystemReset();
lilac0112_1 27:769cb5a7ea37 203 return 1;
lilac0112_1 27:769cb5a7ea37 204 }
lilac0112_1 22:a95f7c63af3c 205 uint8_t LoopFunctionB(uint8_t x){
lilac0112_1 22:a95f7c63af3c 206 char buf[0x10];
lilac0112_1 22:a95f7c63af3c 207 if(x==1) data.strategy = 6;
lilac0112_1 22:a95f7c63af3c 208 if(x==2) data.strategy = 7;
lilac0112_1 22:a95f7c63af3c 209 if(x==3) data.strategy = 8;
lilac0112_1 22:a95f7c63af3c 210 data.init_point_flag=1;
lilac0112_1 22:a95f7c63af3c 211 sprintf(buf, "Make a strategy");
lilac0112_1 22:a95f7c63af3c 212 Lcd.locate(0, 1);Lcd.print(buf);return 0;
lilac0112_1 22:a95f7c63af3c 213 }
lilac0112_1 22:a95f7c63af3c 214 uint8_t LoopFunctionC(uint8_t x){
lilac0112_1 22:a95f7c63af3c 215 char buf[0x10];
lilac0112_1 22:a95f7c63af3c 216 if(x==1) data.strategy = 9;
lilac0112_1 22:a95f7c63af3c 217 if(x==2) data.strategy = 10;
lilac0112_1 22:a95f7c63af3c 218 if(x==3) data.strategy = 11;
lilac0112_1 22:a95f7c63af3c 219 data.init_point_flag=1;
lilac0112_1 22:a95f7c63af3c 220 sprintf(buf, "Make a strategy");
lilac0112_1 22:a95f7c63af3c 221 Lcd.locate(0, 1);Lcd.print(buf);return 0;
lilac0112_1 22:a95f7c63af3c 222 }
lilac0112_1 19:342da3a5a474 223 uint8_t LoopFunctionD(uint8_t x){
lilac0112_1 19:342da3a5a474 224 char buf[0x10];
lilac0112_1 19:342da3a5a474 225 if(x==1) data.strategy = 0;
lilac0112_1 19:342da3a5a474 226 if(x==2) data.strategy = 1;
lilac0112_1 19:342da3a5a474 227 if(x==3) data.strategy = 2;
lilac0112_1 19:342da3a5a474 228 data.init_point_flag=1;
lilac0112_1 19:342da3a5a474 229 sprintf(buf, "Make a strategy");
lilac0112_1 19:342da3a5a474 230 Lcd.locate(0, 1);Lcd.print(buf);return 0;
lilac0112_1 19:342da3a5a474 231 }
lilac0112_1 19:342da3a5a474 232 uint8_t LoopFunctionE(uint8_t x){
lilac0112_1 19:342da3a5a474 233 char buf[0x10];
lilac0112_1 19:342da3a5a474 234 if(x==1) data.strategy = 3;
lilac0112_1 19:342da3a5a474 235 if(x==2) data.strategy = 4;
lilac0112_1 19:342da3a5a474 236 if(x==3) data.strategy = 5;
lilac0112_1 19:342da3a5a474 237 data.init_point_flag=1;
lilac0112_1 19:342da3a5a474 238 sprintf(buf, "Make a strategy");
lilac0112_1 19:342da3a5a474 239 Lcd.locate(0, 1);Lcd.print(buf);return 0;
lilac0112_1 19:342da3a5a474 240 }
lilac0112_1 28:8ac6c3c1e643 241 uint8_t LoopFunctionF(uint8_t x){
lilac0112_1 28:8ac6c3c1e643 242 char buf[0x10];
lilac0112_1 28:8ac6c3c1e643 243 sprintf(buf, "CatPotForDebug");
lilac0112_1 28:8ac6c3c1e643 244 Lcd.locate(0, 1);Lcd.print(buf);
lilac0112_1 28:8ac6c3c1e643 245 ActiveLoop();
lilac0112_1 28:8ac6c3c1e643 246 return 1;
lilac0112_1 28:8ac6c3c1e643 247 }