first publish
Dependents: CleaningMachine_Betago CleaningMachine_Betago clean_V1 CleaningM-Palm ... more
UI.cpp
- Committer:
- icyzkungz
- Date:
- 2016-02-15
- Revision:
- 0:da168b469315
File content as of revision 0:da168b469315:
#include "UI.h" 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) { #ifdef UI_DEBUG pc = new Serial(USBTX, USBRX); pc->baud(115200); #endif //LED = new BusOut(LED_WALK1, LED_WALK2, LED_WALK3, LED_SWEEP, LED_WATER, LED_STATUS); LedWalk1 = new DigitalOut(LED_WALK1); LedWalk2 = new DigitalOut(LED_WALK2); LedWalk3 = new DigitalOut(LED_WALK3); LedSweep = new DigitalOut(LED_SWEEP); LedWater = new DigitalOut(LED_WATER); LedStatus = new DigitalOut(LED_STATUS); LedWalk1->write(0); LedWalk2->write(0); LedWalk3->write(0); LedSweep->write(0); LedWater->write(0); LedStatus->write(0); SwEmergency.rise(this, &UI::SwEmergencyPush); SwEmergency.fall(this, &UI::SwEmergencyRelease); 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); 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); count[0] = count[1] = count[2] = 0; last_state = now_state = 0; state[0] = state[1] = false; EmergencyCheck = false; SystemState = 0; //now = 0; //t.start(); // for LED Status //last = t.read(); // check this again (read or read_ms) } int UI::LEDState() { #ifdef UI_DEBUG pc->printf("LEDState\n"); #endif if(1/*Everything Ready*/) { LedStatus->write(1); return 1; } else if(1/*Cannot Communicate*/) { LedStatus->write(0); return 0; } else if(1/*Communicated but press Emergency button*/) { //check communicate by ping LedStatus->write(1); wait_ms(300); LedStatus->write(0); wait_ms(300); /*now = t.read(); if((last-now) > 500) { if(LedStatus->read()==0) LedStatus->write(1); else LedStatus->write(0); last = now; }*/ return 0; } } void UI::LEDWalkOnOff(int x, int y, int z) { if(x==1) LedWalk1->write(1); else LedWalk1->write(0); if(y==1) LedWalk2->write(1); else LedWalk2->write(0); if(z==1) LedWalk3->write(1); else LedWalk3->write(0); } void UI::SwWalk1Tick() { if(!EmergencyCheck) { #ifdef UI_DEBUG pc->printf("SwitchWalk 1 Ticked\n"); #endif now_state = 1; if(last_state != now_state) { //Walk Style Command //Turn LED on LEDWalkOnOff(1,0,0); last_state = 1; } } } void UI::SwWalk2Tick() { if(!EmergencyCheck) { #ifdef UI_DEBUG pc->printf("SwitchWalk 2 Ticked\n"); #endif now_state = 2; if(last_state != now_state) { //Walk Style Command //Turn LED on LEDWalkOnOff(0,1,0); last_state = 2; } } } void UI::SwWalk3Tick() { if(!EmergencyCheck) { #ifdef UI_DEBUG pc->printf("SwitchWalk 3 Ticked\n"); #endif now_state = 3; if(last_state != now_state) { //Walk Style Command //Turn LED on LEDWalkOnOff(0,0,1); last_state = 3; } } } void UI::SwSweepTick() { if(!EmergencyCheck) { count[0]++; #ifdef UI_DEBUG pc->printf("Switch Sweep Ticked\n"); #endif if(count[0]%2!=0) { LedSweep->write(1); #ifdef UI_DEBUG pc->printf("Sweep On\n"); #endif } else { LedSweep->write(0); #ifdef UI_DEBUG pc->printf("Sweep Off\n"); #endif } //Send Sweep Command } } void UI::SwWaterTick() { if(!EmergencyCheck) { count[1]++; #ifdef UI_DEBUG pc->printf("Switch Water Ticked\n"); #endif if(count[1]%2!=0) { LedWater->write(1); #ifdef UI_DEBUG pc->printf("Water On\n"); #endif } else { LedWater->write(0); #ifdef UI_DEBUG pc->printf("Water Off\n"); #endif } //Send Water Command } } void UI::SwEmergencyPush() { EmergencyCheck = true; //Send communication command to 'Stop Walking ' //Turn all LEDs off except 'status LED' LEDWalkOnOff(0,0,0); LedSweep->write(0); LedWater->write(0); VelocityBar->write(0b0000000000); #ifdef UI_DEBUG pc->printf("Emergency Button PUSHING\n"); #endif count[0] = count[1] = count[2] = 0; } void UI::SwEmergencyRelease() { EmergencyCheck = false; //Send communication command to 'Stop Walking ' //Turn all LEDs off except 'status LED' #ifdef UI_DEBUG pc->printf("Emergency Button RELEASE\n"); #endif } void UI::BatteryBarLevel() { float value; //Delete this after you get DigitalIn value from battery if(value >= 100) BatteryBar->write(0b1111111111); } void UI::RunSystem() { if(SwWalk1==1) SwWalk1Tick(); else if(SwWalk2==1) SwWalk2Tick(); else if(SwWalk3==1) SwWalk3Tick(); if(SwSweep==1){ SwSweepTick(); state[0] = true; } if(state[0]==true && SwSweep==1){ SwSweepTick(); state[0] = false; } if(SwWater==1){ SwWaterTick(); state[1] = true; } if(state[1]==true && SwWater==1){ SwWaterTick(); state[1] = false; } }