Main Program
Dependencies: mbed AQM1602 HMC6352 PID
main_processing/setup_command_active/command.cpp@45:c23f25c00d0d, 2016-02-25 (annotated)
- 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?
User | Revision | Line number | New 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 | } |