first publish
Dependents: CleaningMachine_Betago CleaningMachine_Betago clean_V1 CleaningM-Palm ... more
UI.cpp@0:da168b469315, 2016-02-15 (annotated)
- Committer:
- icyzkungz
- Date:
- Mon Feb 15 17:44:04 2016 +0000
- Revision:
- 0:da168b469315
first publish
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
icyzkungz | 0:da168b469315 | 1 | #include "UI.h" |
icyzkungz | 0:da168b469315 | 2 | |
icyzkungz | 0:da168b469315 | 3 | UI::UI(PinName a,PinName b,PinName c,PinName d,PinName e ,PinName f) : SwWalk1(a), SwWalk2(b), SwWalk3(c), SwSweep(d), SwWater(e), SwEmergency(f) |
icyzkungz | 0:da168b469315 | 4 | { |
icyzkungz | 0:da168b469315 | 5 | #ifdef UI_DEBUG |
icyzkungz | 0:da168b469315 | 6 | pc = new Serial(USBTX, USBRX); |
icyzkungz | 0:da168b469315 | 7 | pc->baud(115200); |
icyzkungz | 0:da168b469315 | 8 | #endif |
icyzkungz | 0:da168b469315 | 9 | |
icyzkungz | 0:da168b469315 | 10 | //LED = new BusOut(LED_WALK1, LED_WALK2, LED_WALK3, LED_SWEEP, LED_WATER, LED_STATUS); |
icyzkungz | 0:da168b469315 | 11 | LedWalk1 = new DigitalOut(LED_WALK1); |
icyzkungz | 0:da168b469315 | 12 | LedWalk2 = new DigitalOut(LED_WALK2); |
icyzkungz | 0:da168b469315 | 13 | LedWalk3 = new DigitalOut(LED_WALK3); |
icyzkungz | 0:da168b469315 | 14 | LedSweep = new DigitalOut(LED_SWEEP); |
icyzkungz | 0:da168b469315 | 15 | LedWater = new DigitalOut(LED_WATER); |
icyzkungz | 0:da168b469315 | 16 | LedStatus = new DigitalOut(LED_STATUS); |
icyzkungz | 0:da168b469315 | 17 | |
icyzkungz | 0:da168b469315 | 18 | LedWalk1->write(0); |
icyzkungz | 0:da168b469315 | 19 | LedWalk2->write(0); |
icyzkungz | 0:da168b469315 | 20 | LedWalk3->write(0); |
icyzkungz | 0:da168b469315 | 21 | LedSweep->write(0); |
icyzkungz | 0:da168b469315 | 22 | LedWater->write(0); |
icyzkungz | 0:da168b469315 | 23 | LedStatus->write(0); |
icyzkungz | 0:da168b469315 | 24 | |
icyzkungz | 0:da168b469315 | 25 | SwEmergency.rise(this, &UI::SwEmergencyPush); |
icyzkungz | 0:da168b469315 | 26 | SwEmergency.fall(this, &UI::SwEmergencyRelease); |
icyzkungz | 0:da168b469315 | 27 | |
icyzkungz | 0:da168b469315 | 28 | VelocityBar = new BusOut(LED_BAR1_1, LED_BAR1_2, LED_BAR1_3, LED_BAR1_4, LED_BAR1_5, LED_BAR1_6, LED_BAR1_7, LED_BAR1_8, LED_BAR1_9, LED_BAR1_10); |
icyzkungz | 0:da168b469315 | 29 | BatteryBar = new BusOut(LED_BAR2_1, LED_BAR2_2, LED_BAR2_3, LED_BAR2_4, LED_BAR2_5, LED_BAR2_6, LED_BAR2_7, LED_BAR2_8, LED_BAR2_9, LED_BAR2_10); |
icyzkungz | 0:da168b469315 | 30 | |
icyzkungz | 0:da168b469315 | 31 | count[0] = count[1] = count[2] = 0; |
icyzkungz | 0:da168b469315 | 32 | last_state = now_state = 0; |
icyzkungz | 0:da168b469315 | 33 | |
icyzkungz | 0:da168b469315 | 34 | state[0] = state[1] = false; |
icyzkungz | 0:da168b469315 | 35 | |
icyzkungz | 0:da168b469315 | 36 | EmergencyCheck = false; |
icyzkungz | 0:da168b469315 | 37 | |
icyzkungz | 0:da168b469315 | 38 | SystemState = 0; |
icyzkungz | 0:da168b469315 | 39 | |
icyzkungz | 0:da168b469315 | 40 | //now = 0; |
icyzkungz | 0:da168b469315 | 41 | //t.start(); // for LED Status |
icyzkungz | 0:da168b469315 | 42 | //last = t.read(); // check this again (read or read_ms) |
icyzkungz | 0:da168b469315 | 43 | } |
icyzkungz | 0:da168b469315 | 44 | |
icyzkungz | 0:da168b469315 | 45 | int UI::LEDState() |
icyzkungz | 0:da168b469315 | 46 | { |
icyzkungz | 0:da168b469315 | 47 | #ifdef UI_DEBUG |
icyzkungz | 0:da168b469315 | 48 | pc->printf("LEDState\n"); |
icyzkungz | 0:da168b469315 | 49 | #endif |
icyzkungz | 0:da168b469315 | 50 | if(1/*Everything Ready*/) { |
icyzkungz | 0:da168b469315 | 51 | LedStatus->write(1); |
icyzkungz | 0:da168b469315 | 52 | return 1; |
icyzkungz | 0:da168b469315 | 53 | |
icyzkungz | 0:da168b469315 | 54 | } else if(1/*Cannot Communicate*/) { |
icyzkungz | 0:da168b469315 | 55 | LedStatus->write(0); |
icyzkungz | 0:da168b469315 | 56 | return 0; |
icyzkungz | 0:da168b469315 | 57 | } |
icyzkungz | 0:da168b469315 | 58 | |
icyzkungz | 0:da168b469315 | 59 | else if(1/*Communicated but press Emergency button*/) { |
icyzkungz | 0:da168b469315 | 60 | |
icyzkungz | 0:da168b469315 | 61 | //check communicate by ping |
icyzkungz | 0:da168b469315 | 62 | |
icyzkungz | 0:da168b469315 | 63 | |
icyzkungz | 0:da168b469315 | 64 | |
icyzkungz | 0:da168b469315 | 65 | LedStatus->write(1); |
icyzkungz | 0:da168b469315 | 66 | wait_ms(300); |
icyzkungz | 0:da168b469315 | 67 | LedStatus->write(0); |
icyzkungz | 0:da168b469315 | 68 | wait_ms(300); |
icyzkungz | 0:da168b469315 | 69 | /*now = t.read(); |
icyzkungz | 0:da168b469315 | 70 | if((last-now) > 500) { |
icyzkungz | 0:da168b469315 | 71 | if(LedStatus->read()==0) LedStatus->write(1); |
icyzkungz | 0:da168b469315 | 72 | else LedStatus->write(0); |
icyzkungz | 0:da168b469315 | 73 | last = now; |
icyzkungz | 0:da168b469315 | 74 | }*/ |
icyzkungz | 0:da168b469315 | 75 | return 0; |
icyzkungz | 0:da168b469315 | 76 | } |
icyzkungz | 0:da168b469315 | 77 | } |
icyzkungz | 0:da168b469315 | 78 | |
icyzkungz | 0:da168b469315 | 79 | void UI::LEDWalkOnOff(int x, int y, int z) |
icyzkungz | 0:da168b469315 | 80 | { |
icyzkungz | 0:da168b469315 | 81 | if(x==1) LedWalk1->write(1); |
icyzkungz | 0:da168b469315 | 82 | else LedWalk1->write(0); |
icyzkungz | 0:da168b469315 | 83 | if(y==1) LedWalk2->write(1); |
icyzkungz | 0:da168b469315 | 84 | else LedWalk2->write(0); |
icyzkungz | 0:da168b469315 | 85 | if(z==1) LedWalk3->write(1); |
icyzkungz | 0:da168b469315 | 86 | else LedWalk3->write(0); |
icyzkungz | 0:da168b469315 | 87 | } |
icyzkungz | 0:da168b469315 | 88 | |
icyzkungz | 0:da168b469315 | 89 | |
icyzkungz | 0:da168b469315 | 90 | void UI::SwWalk1Tick() |
icyzkungz | 0:da168b469315 | 91 | { |
icyzkungz | 0:da168b469315 | 92 | if(!EmergencyCheck) { |
icyzkungz | 0:da168b469315 | 93 | #ifdef UI_DEBUG |
icyzkungz | 0:da168b469315 | 94 | pc->printf("SwitchWalk 1 Ticked\n"); |
icyzkungz | 0:da168b469315 | 95 | #endif |
icyzkungz | 0:da168b469315 | 96 | now_state = 1; |
icyzkungz | 0:da168b469315 | 97 | |
icyzkungz | 0:da168b469315 | 98 | if(last_state != now_state) { |
icyzkungz | 0:da168b469315 | 99 | |
icyzkungz | 0:da168b469315 | 100 | //Walk Style Command |
icyzkungz | 0:da168b469315 | 101 | |
icyzkungz | 0:da168b469315 | 102 | //Turn LED on |
icyzkungz | 0:da168b469315 | 103 | LEDWalkOnOff(1,0,0); |
icyzkungz | 0:da168b469315 | 104 | |
icyzkungz | 0:da168b469315 | 105 | last_state = 1; |
icyzkungz | 0:da168b469315 | 106 | } |
icyzkungz | 0:da168b469315 | 107 | } |
icyzkungz | 0:da168b469315 | 108 | } |
icyzkungz | 0:da168b469315 | 109 | |
icyzkungz | 0:da168b469315 | 110 | void UI::SwWalk2Tick() |
icyzkungz | 0:da168b469315 | 111 | { |
icyzkungz | 0:da168b469315 | 112 | if(!EmergencyCheck) { |
icyzkungz | 0:da168b469315 | 113 | #ifdef UI_DEBUG |
icyzkungz | 0:da168b469315 | 114 | pc->printf("SwitchWalk 2 Ticked\n"); |
icyzkungz | 0:da168b469315 | 115 | #endif |
icyzkungz | 0:da168b469315 | 116 | |
icyzkungz | 0:da168b469315 | 117 | now_state = 2; |
icyzkungz | 0:da168b469315 | 118 | |
icyzkungz | 0:da168b469315 | 119 | if(last_state != now_state) { |
icyzkungz | 0:da168b469315 | 120 | |
icyzkungz | 0:da168b469315 | 121 | //Walk Style Command |
icyzkungz | 0:da168b469315 | 122 | |
icyzkungz | 0:da168b469315 | 123 | //Turn LED on |
icyzkungz | 0:da168b469315 | 124 | LEDWalkOnOff(0,1,0); |
icyzkungz | 0:da168b469315 | 125 | |
icyzkungz | 0:da168b469315 | 126 | last_state = 2; |
icyzkungz | 0:da168b469315 | 127 | } |
icyzkungz | 0:da168b469315 | 128 | } |
icyzkungz | 0:da168b469315 | 129 | } |
icyzkungz | 0:da168b469315 | 130 | |
icyzkungz | 0:da168b469315 | 131 | void UI::SwWalk3Tick() |
icyzkungz | 0:da168b469315 | 132 | { |
icyzkungz | 0:da168b469315 | 133 | if(!EmergencyCheck) { |
icyzkungz | 0:da168b469315 | 134 | #ifdef UI_DEBUG |
icyzkungz | 0:da168b469315 | 135 | pc->printf("SwitchWalk 3 Ticked\n"); |
icyzkungz | 0:da168b469315 | 136 | #endif |
icyzkungz | 0:da168b469315 | 137 | now_state = 3; |
icyzkungz | 0:da168b469315 | 138 | |
icyzkungz | 0:da168b469315 | 139 | if(last_state != now_state) { |
icyzkungz | 0:da168b469315 | 140 | |
icyzkungz | 0:da168b469315 | 141 | //Walk Style Command |
icyzkungz | 0:da168b469315 | 142 | |
icyzkungz | 0:da168b469315 | 143 | //Turn LED on |
icyzkungz | 0:da168b469315 | 144 | LEDWalkOnOff(0,0,1); |
icyzkungz | 0:da168b469315 | 145 | last_state = 3; |
icyzkungz | 0:da168b469315 | 146 | } |
icyzkungz | 0:da168b469315 | 147 | } |
icyzkungz | 0:da168b469315 | 148 | } |
icyzkungz | 0:da168b469315 | 149 | |
icyzkungz | 0:da168b469315 | 150 | void UI::SwSweepTick() |
icyzkungz | 0:da168b469315 | 151 | { |
icyzkungz | 0:da168b469315 | 152 | if(!EmergencyCheck) { |
icyzkungz | 0:da168b469315 | 153 | count[0]++; |
icyzkungz | 0:da168b469315 | 154 | |
icyzkungz | 0:da168b469315 | 155 | #ifdef UI_DEBUG |
icyzkungz | 0:da168b469315 | 156 | pc->printf("Switch Sweep Ticked\n"); |
icyzkungz | 0:da168b469315 | 157 | #endif |
icyzkungz | 0:da168b469315 | 158 | |
icyzkungz | 0:da168b469315 | 159 | if(count[0]%2!=0) { |
icyzkungz | 0:da168b469315 | 160 | LedSweep->write(1); |
icyzkungz | 0:da168b469315 | 161 | #ifdef UI_DEBUG |
icyzkungz | 0:da168b469315 | 162 | pc->printf("Sweep On\n"); |
icyzkungz | 0:da168b469315 | 163 | #endif |
icyzkungz | 0:da168b469315 | 164 | } else { |
icyzkungz | 0:da168b469315 | 165 | LedSweep->write(0); |
icyzkungz | 0:da168b469315 | 166 | #ifdef UI_DEBUG |
icyzkungz | 0:da168b469315 | 167 | pc->printf("Sweep Off\n"); |
icyzkungz | 0:da168b469315 | 168 | #endif |
icyzkungz | 0:da168b469315 | 169 | } |
icyzkungz | 0:da168b469315 | 170 | |
icyzkungz | 0:da168b469315 | 171 | //Send Sweep Command |
icyzkungz | 0:da168b469315 | 172 | |
icyzkungz | 0:da168b469315 | 173 | } |
icyzkungz | 0:da168b469315 | 174 | } |
icyzkungz | 0:da168b469315 | 175 | |
icyzkungz | 0:da168b469315 | 176 | void UI::SwWaterTick() |
icyzkungz | 0:da168b469315 | 177 | { |
icyzkungz | 0:da168b469315 | 178 | if(!EmergencyCheck) { |
icyzkungz | 0:da168b469315 | 179 | count[1]++; |
icyzkungz | 0:da168b469315 | 180 | |
icyzkungz | 0:da168b469315 | 181 | #ifdef UI_DEBUG |
icyzkungz | 0:da168b469315 | 182 | pc->printf("Switch Water Ticked\n"); |
icyzkungz | 0:da168b469315 | 183 | #endif |
icyzkungz | 0:da168b469315 | 184 | |
icyzkungz | 0:da168b469315 | 185 | if(count[1]%2!=0) { |
icyzkungz | 0:da168b469315 | 186 | LedWater->write(1); |
icyzkungz | 0:da168b469315 | 187 | #ifdef UI_DEBUG |
icyzkungz | 0:da168b469315 | 188 | pc->printf("Water On\n"); |
icyzkungz | 0:da168b469315 | 189 | #endif |
icyzkungz | 0:da168b469315 | 190 | } else { |
icyzkungz | 0:da168b469315 | 191 | LedWater->write(0); |
icyzkungz | 0:da168b469315 | 192 | #ifdef UI_DEBUG |
icyzkungz | 0:da168b469315 | 193 | pc->printf("Water Off\n"); |
icyzkungz | 0:da168b469315 | 194 | #endif |
icyzkungz | 0:da168b469315 | 195 | } |
icyzkungz | 0:da168b469315 | 196 | |
icyzkungz | 0:da168b469315 | 197 | //Send Water Command |
icyzkungz | 0:da168b469315 | 198 | |
icyzkungz | 0:da168b469315 | 199 | } |
icyzkungz | 0:da168b469315 | 200 | } |
icyzkungz | 0:da168b469315 | 201 | |
icyzkungz | 0:da168b469315 | 202 | |
icyzkungz | 0:da168b469315 | 203 | void UI::SwEmergencyPush() |
icyzkungz | 0:da168b469315 | 204 | { |
icyzkungz | 0:da168b469315 | 205 | EmergencyCheck = true; |
icyzkungz | 0:da168b469315 | 206 | //Send communication command to 'Stop Walking ' |
icyzkungz | 0:da168b469315 | 207 | |
icyzkungz | 0:da168b469315 | 208 | |
icyzkungz | 0:da168b469315 | 209 | //Turn all LEDs off except 'status LED' |
icyzkungz | 0:da168b469315 | 210 | LEDWalkOnOff(0,0,0); |
icyzkungz | 0:da168b469315 | 211 | LedSweep->write(0); |
icyzkungz | 0:da168b469315 | 212 | LedWater->write(0); |
icyzkungz | 0:da168b469315 | 213 | |
icyzkungz | 0:da168b469315 | 214 | VelocityBar->write(0b0000000000); |
icyzkungz | 0:da168b469315 | 215 | |
icyzkungz | 0:da168b469315 | 216 | #ifdef UI_DEBUG |
icyzkungz | 0:da168b469315 | 217 | pc->printf("Emergency Button PUSHING\n"); |
icyzkungz | 0:da168b469315 | 218 | #endif |
icyzkungz | 0:da168b469315 | 219 | count[0] = count[1] = count[2] = 0; |
icyzkungz | 0:da168b469315 | 220 | } |
icyzkungz | 0:da168b469315 | 221 | |
icyzkungz | 0:da168b469315 | 222 | void UI::SwEmergencyRelease() |
icyzkungz | 0:da168b469315 | 223 | { |
icyzkungz | 0:da168b469315 | 224 | EmergencyCheck = false; |
icyzkungz | 0:da168b469315 | 225 | //Send communication command to 'Stop Walking ' |
icyzkungz | 0:da168b469315 | 226 | |
icyzkungz | 0:da168b469315 | 227 | |
icyzkungz | 0:da168b469315 | 228 | //Turn all LEDs off except 'status LED' |
icyzkungz | 0:da168b469315 | 229 | |
icyzkungz | 0:da168b469315 | 230 | |
icyzkungz | 0:da168b469315 | 231 | |
icyzkungz | 0:da168b469315 | 232 | #ifdef UI_DEBUG |
icyzkungz | 0:da168b469315 | 233 | pc->printf("Emergency Button RELEASE\n"); |
icyzkungz | 0:da168b469315 | 234 | #endif |
icyzkungz | 0:da168b469315 | 235 | } |
icyzkungz | 0:da168b469315 | 236 | |
icyzkungz | 0:da168b469315 | 237 | void UI::BatteryBarLevel() |
icyzkungz | 0:da168b469315 | 238 | { |
icyzkungz | 0:da168b469315 | 239 | float value; //Delete this after you get DigitalIn value from battery |
icyzkungz | 0:da168b469315 | 240 | if(value >= 100) |
icyzkungz | 0:da168b469315 | 241 | BatteryBar->write(0b1111111111); |
icyzkungz | 0:da168b469315 | 242 | } |
icyzkungz | 0:da168b469315 | 243 | |
icyzkungz | 0:da168b469315 | 244 | void UI::RunSystem() |
icyzkungz | 0:da168b469315 | 245 | { |
icyzkungz | 0:da168b469315 | 246 | if(SwWalk1==1) SwWalk1Tick(); |
icyzkungz | 0:da168b469315 | 247 | else if(SwWalk2==1) SwWalk2Tick(); |
icyzkungz | 0:da168b469315 | 248 | else if(SwWalk3==1) SwWalk3Tick(); |
icyzkungz | 0:da168b469315 | 249 | |
icyzkungz | 0:da168b469315 | 250 | if(SwSweep==1){ |
icyzkungz | 0:da168b469315 | 251 | SwSweepTick(); |
icyzkungz | 0:da168b469315 | 252 | state[0] = true; |
icyzkungz | 0:da168b469315 | 253 | } |
icyzkungz | 0:da168b469315 | 254 | if(state[0]==true && SwSweep==1){ |
icyzkungz | 0:da168b469315 | 255 | SwSweepTick(); |
icyzkungz | 0:da168b469315 | 256 | state[0] = false; |
icyzkungz | 0:da168b469315 | 257 | } |
icyzkungz | 0:da168b469315 | 258 | |
icyzkungz | 0:da168b469315 | 259 | if(SwWater==1){ |
icyzkungz | 0:da168b469315 | 260 | SwWaterTick(); |
icyzkungz | 0:da168b469315 | 261 | state[1] = true; |
icyzkungz | 0:da168b469315 | 262 | } |
icyzkungz | 0:da168b469315 | 263 | if(state[1]==true && SwWater==1){ |
icyzkungz | 0:da168b469315 | 264 | SwWaterTick(); |
icyzkungz | 0:da168b469315 | 265 | state[1] = false; |
icyzkungz | 0:da168b469315 | 266 | } |
icyzkungz | 0:da168b469315 | 267 | } |