first publish

Dependents:   CleaningMachine_Betago CleaningMachine_Betago clean_V1 CleaningM-Palm ... more

Committer:
icyzkungz
Date:
Mon Feb 15 17:44:04 2016 +0000
Revision:
0:da168b469315
first publish

Who changed what in which revision?

UserRevisionLine numberNew 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 }