![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Main Program
Dependencies: mbed AQM1602 HMC6352 PID
main_processing/setup_command_active/command.cpp@29:b413b0bb07a1, 2016-02-01 (annotated)
- Committer:
- lilac0112_1
- Date:
- Mon Feb 01 11:25:32 2016 +0000
- Revision:
- 29:b413b0bb07a1
- Parent:
- 28:8ac6c3c1e643
- Child:
- 31:0b0f64831771
dangerous
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 | 29:b413b0bb07a1 | 84 | if(x==1){ |
lilac0112_1 | 29:b413b0bb07a1 | 85 | sprintf(buf, "Strategy:%2d", data.strategy); |
lilac0112_1 | 29:b413b0bb07a1 | 86 | Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0; |
lilac0112_1 | 29:b413b0bb07a1 | 87 | } |
lilac0112_1 | 29:b413b0bb07a1 | 88 | if(x==2){ |
lilac0112_1 | 29:b413b0bb07a1 | 89 | sprintf(buf, "SeeYouAgain!"); |
lilac0112_1 | 29:b413b0bb07a1 | 90 | Lcd.locate(0, 1);Lcd.print(buf);wait(0.5); |
lilac0112_1 | 29:b413b0bb07a1 | 91 | NVIC_SystemReset(); |
lilac0112_1 | 29:b413b0bb07a1 | 92 | return 1; |
lilac0112_1 | 29:b413b0bb07a1 | 93 | } |
lilac0112_1 | 29:b413b0bb07a1 | 94 | return 1; |
lilac0112_1 | 19:342da3a5a474 | 95 | } |
lilac0112_1 | 19:342da3a5a474 | 96 | uint8_t LoopFunction1(uint8_t x){ |
lilac0112_1 | 19:342da3a5a474 | 97 | char buf[0x10]; |
lilac0112_1 | 19:342da3a5a474 | 98 | sprintf(buf, "CatPot"); |
lilac0112_1 | 19:342da3a5a474 | 99 | Lcd.locate(0, 1);Lcd.print(buf); |
lilac0112_1 | 28:8ac6c3c1e643 | 100 | data.strategy=0; |
lilac0112_1 | 19:342da3a5a474 | 101 | ActiveLoop(); |
lilac0112_1 | 19:342da3a5a474 | 102 | return 1; |
lilac0112_1 | 19:342da3a5a474 | 103 | } |
lilac0112_1 | 19:342da3a5a474 | 104 | uint8_t LoopFunction2(uint8_t x){ |
lilac0112_1 | 19:342da3a5a474 | 105 | char buf[0x10]; |
lilac0112_1 | 23:d95d8d3e89f3 | 106 | ReadIr(); |
lilac0112_1 | 23:d95d8d3e89f3 | 107 | |
lilac0112_1 | 23:d95d8d3e89f3 | 108 | if(x==1) sprintf(buf, "SHRT:%2d, LNG:%2d", data.irSpot[0], data.irSpot[1]); |
lilac0112_1 | 23:d95d8d3e89f3 | 109 | if(x==2) sprintf(buf, "NOTE:%2d", data.irNotice); |
lilac0112_1 | 26:fbb03281fc7d | 110 | if(x==3) sprintf(buf, "POSITION:%2d", data.irPosition); |
lilac0112_1 | 22:a95f7c63af3c | 111 | Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0; |
lilac0112_1 | 19:342da3a5a474 | 112 | } |
lilac0112_1 | 23:d95d8d3e89f3 | 113 | uint8_t LoopFunction3(uint8_t x){ |
lilac0112_1 | 23:d95d8d3e89f3 | 114 | char buf[0x10]; |
lilac0112_1 | 27:769cb5a7ea37 | 115 | sprintf(buf, "A:%1d B:%1d C:%1d ", Line[0].read(), Line[1].read(), Line[2].read()); |
lilac0112_1 | 23:d95d8d3e89f3 | 116 | Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0; |
lilac0112_1 | 23:d95d8d3e89f3 | 117 | } |
lilac0112_1 | 19:342da3a5a474 | 118 | uint8_t LoopFunction4(uint8_t x){ |
lilac0112_1 | 19:342da3a5a474 | 119 | char buf[0x10]; |
lilac0112_1 | 23:d95d8d3e89f3 | 120 | PidUpdate(); |
lilac0112_1 | 24:9fb74ea3c25d | 121 | sprintf(buf, "In:%03.0f Out:%+02d", data.InputPID, data.OutputPID); |
lilac0112_1 | 22:a95f7c63af3c | 122 | Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0; |
lilac0112_1 | 19:342da3a5a474 | 123 | } |
lilac0112_1 | 22:a95f7c63af3c | 124 | uint8_t LoopFunction5(uint8_t x){ |
lilac0112_1 | 22:a95f7c63af3c | 125 | char buf[0x10]; |
lilac0112_1 | 22:a95f7c63af3c | 126 | sprintf(buf, "Enter"); |
lilac0112_1 | 22:a95f7c63af3c | 127 | Lcd.locate(0, 1);Lcd.print(buf); |
lilac0112_1 | 22:a95f7c63af3c | 128 | hmc.setCalibrationMode(HMC6352_EXIT_CALIB); |
lilac0112_1 | 22:a95f7c63af3c | 129 | return 1; |
lilac0112_1 | 22:a95f7c63af3c | 130 | } |
lilac0112_1 | 22:a95f7c63af3c | 131 | uint8_t LoopFunction6(uint8_t x){ |
lilac0112_1 | 22:a95f7c63af3c | 132 | char buf[0x10]; |
lilac0112_1 | 22:a95f7c63af3c | 133 | sprintf(buf, "Exit"); |
lilac0112_1 | 22:a95f7c63af3c | 134 | Lcd.locate(0, 1);Lcd.print(buf); |
lilac0112_1 | 22:a95f7c63af3c | 135 | hmc.setCalibrationMode(HMC6352_ENTER_CALIB); |
lilac0112_1 | 22:a95f7c63af3c | 136 | return 1; |
lilac0112_1 | 22:a95f7c63af3c | 137 | } |
lilac0112_1 | 27:769cb5a7ea37 | 138 | uint8_t LoopFunction7(uint8_t x){ |
lilac0112_1 | 27:769cb5a7ea37 | 139 | char buf[0x10]; |
lilac0112_1 | 27:769cb5a7ea37 | 140 | data.init_point_flag=1; |
lilac0112_1 | 27:769cb5a7ea37 | 141 | sprintf(buf, "FaceToFront!"); |
lilac0112_1 | 27:769cb5a7ea37 | 142 | Lcd.locate(0, 1);Lcd.print(buf); |
lilac0112_1 | 27:769cb5a7ea37 | 143 | for(int i=0; i<5; i++){ |
lilac0112_1 | 27:769cb5a7ea37 | 144 | ReadCmps(); |
lilac0112_1 | 27:769cb5a7ea37 | 145 | data.CmpsInitialValue = data.cmps; |
lilac0112_1 | 27:769cb5a7ea37 | 146 | wait_ms(100); |
lilac0112_1 | 27:769cb5a7ea37 | 147 | } |
lilac0112_1 | 27:769cb5a7ea37 | 148 | data.CmpsDiff = REFERENCE - data.cmps; |
lilac0112_1 | 27:769cb5a7ea37 | 149 | data.FrontDeg=0; |
lilac0112_1 | 27:769cb5a7ea37 | 150 | return 1; |
lilac0112_1 | 27:769cb5a7ea37 | 151 | } |
lilac0112_1 | 28:8ac6c3c1e643 | 152 | uint8_t LoopFunction8(uint8_t x){ |
lilac0112_1 | 28:8ac6c3c1e643 | 153 | char buf[0x10]; |
lilac0112_1 | 28:8ac6c3c1e643 | 154 | if(x==1) data.s_pow = 15; |
lilac0112_1 | 28:8ac6c3c1e643 | 155 | if(x==2) data.s_pow = 25; |
lilac0112_1 | 28:8ac6c3c1e643 | 156 | if(x==3) data.s_pow = 35; |
lilac0112_1 | 28:8ac6c3c1e643 | 157 | sprintf(buf, "TuningS_power"); |
lilac0112_1 | 28:8ac6c3c1e643 | 158 | Lcd.locate(0, 1);Lcd.print(buf);return 0; |
lilac0112_1 | 28:8ac6c3c1e643 | 159 | } |
lilac0112_1 | 28:8ac6c3c1e643 | 160 | uint8_t LoopFunction9(uint8_t x){ |
lilac0112_1 | 28:8ac6c3c1e643 | 161 | char buf[0x10]; |
lilac0112_1 | 28:8ac6c3c1e643 | 162 | if(x==1) data.l_pow = 15; |
lilac0112_1 | 28:8ac6c3c1e643 | 163 | if(x==2) data.l_pow = 25; |
lilac0112_1 | 28:8ac6c3c1e643 | 164 | if(x==3) data.l_pow = 35; |
lilac0112_1 | 28:8ac6c3c1e643 | 165 | sprintf(buf, "TuningL_power"); |
lilac0112_1 | 28:8ac6c3c1e643 | 166 | Lcd.locate(0, 1);Lcd.print(buf);return 0; |
lilac0112_1 | 28:8ac6c3c1e643 | 167 | } |
lilac0112_1 | 27:769cb5a7ea37 | 168 | uint8_t LoopFunctionA(uint8_t x){ |
lilac0112_1 | 27:769cb5a7ea37 | 169 | char buf[0x10]; |
lilac0112_1 | 27:769cb5a7ea37 | 170 | sprintf(buf, "SeeYouAgain!"); |
lilac0112_1 | 27:769cb5a7ea37 | 171 | Lcd.locate(0, 1);Lcd.print(buf);wait(0.5); |
lilac0112_1 | 27:769cb5a7ea37 | 172 | NVIC_SystemReset(); |
lilac0112_1 | 27:769cb5a7ea37 | 173 | return 1; |
lilac0112_1 | 27:769cb5a7ea37 | 174 | } |
lilac0112_1 | 22:a95f7c63af3c | 175 | uint8_t LoopFunctionB(uint8_t x){ |
lilac0112_1 | 22:a95f7c63af3c | 176 | char buf[0x10]; |
lilac0112_1 | 22:a95f7c63af3c | 177 | if(x==1) data.strategy = 6; |
lilac0112_1 | 22:a95f7c63af3c | 178 | if(x==2) data.strategy = 7; |
lilac0112_1 | 22:a95f7c63af3c | 179 | if(x==3) data.strategy = 8; |
lilac0112_1 | 22:a95f7c63af3c | 180 | data.init_point_flag=1; |
lilac0112_1 | 22:a95f7c63af3c | 181 | sprintf(buf, "Make a strategy"); |
lilac0112_1 | 22:a95f7c63af3c | 182 | Lcd.locate(0, 1);Lcd.print(buf);return 0; |
lilac0112_1 | 22:a95f7c63af3c | 183 | } |
lilac0112_1 | 22:a95f7c63af3c | 184 | uint8_t LoopFunctionC(uint8_t x){ |
lilac0112_1 | 22:a95f7c63af3c | 185 | char buf[0x10]; |
lilac0112_1 | 22:a95f7c63af3c | 186 | if(x==1) data.strategy = 9; |
lilac0112_1 | 22:a95f7c63af3c | 187 | if(x==2) data.strategy = 10; |
lilac0112_1 | 22:a95f7c63af3c | 188 | if(x==3) data.strategy = 11; |
lilac0112_1 | 22:a95f7c63af3c | 189 | data.init_point_flag=1; |
lilac0112_1 | 22:a95f7c63af3c | 190 | sprintf(buf, "Make a strategy"); |
lilac0112_1 | 22:a95f7c63af3c | 191 | Lcd.locate(0, 1);Lcd.print(buf);return 0; |
lilac0112_1 | 22:a95f7c63af3c | 192 | } |
lilac0112_1 | 19:342da3a5a474 | 193 | uint8_t LoopFunctionD(uint8_t x){ |
lilac0112_1 | 19:342da3a5a474 | 194 | char buf[0x10]; |
lilac0112_1 | 19:342da3a5a474 | 195 | if(x==1) data.strategy = 0; |
lilac0112_1 | 19:342da3a5a474 | 196 | if(x==2) data.strategy = 1; |
lilac0112_1 | 19:342da3a5a474 | 197 | if(x==3) data.strategy = 2; |
lilac0112_1 | 19:342da3a5a474 | 198 | data.init_point_flag=1; |
lilac0112_1 | 19:342da3a5a474 | 199 | sprintf(buf, "Make a strategy"); |
lilac0112_1 | 19:342da3a5a474 | 200 | Lcd.locate(0, 1);Lcd.print(buf);return 0; |
lilac0112_1 | 19:342da3a5a474 | 201 | } |
lilac0112_1 | 19:342da3a5a474 | 202 | uint8_t LoopFunctionE(uint8_t x){ |
lilac0112_1 | 19:342da3a5a474 | 203 | char buf[0x10]; |
lilac0112_1 | 19:342da3a5a474 | 204 | if(x==1) data.strategy = 3; |
lilac0112_1 | 19:342da3a5a474 | 205 | if(x==2) data.strategy = 4; |
lilac0112_1 | 19:342da3a5a474 | 206 | if(x==3) data.strategy = 5; |
lilac0112_1 | 19:342da3a5a474 | 207 | data.init_point_flag=1; |
lilac0112_1 | 19:342da3a5a474 | 208 | sprintf(buf, "Make a strategy"); |
lilac0112_1 | 19:342da3a5a474 | 209 | Lcd.locate(0, 1);Lcd.print(buf);return 0; |
lilac0112_1 | 19:342da3a5a474 | 210 | } |
lilac0112_1 | 28:8ac6c3c1e643 | 211 | uint8_t LoopFunctionF(uint8_t x){ |
lilac0112_1 | 28:8ac6c3c1e643 | 212 | char buf[0x10]; |
lilac0112_1 | 28:8ac6c3c1e643 | 213 | sprintf(buf, "CatPotForDebug"); |
lilac0112_1 | 28:8ac6c3c1e643 | 214 | Lcd.locate(0, 1);Lcd.print(buf); |
lilac0112_1 | 28:8ac6c3c1e643 | 215 | ActiveLoop(); |
lilac0112_1 | 28:8ac6c3c1e643 | 216 | return 1; |
lilac0112_1 | 28:8ac6c3c1e643 | 217 | } |