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