Code to let Gr20's BioRobotics2017 robot come to live.
Dependencies: FastPWM MODSERIAL QEI mbed
ui.cpp
- Committer:
- megrootens
- Date:
- 2017-11-13
- Revision:
- 7:b9a209f889f5
File content as of revision 7:b9a209f889f5:
#include "ui.h" #include "robot.h" /** * UI implementation */ namespace ui { State state = IGNORE; DigitalOut rgb_led[] {LED_RED, LED_GREEN, LED_BLUE}; MODSERIAL serial(USBTX,USBRX); /** * Display robot state using (flashing) LEDs */ void StatusDisplay() { switch (robot::state) { case robot::OFF: // continuous red; rgb_led[0] = LED_ON; rgb_led[1] = !LED_ON; rgb_led[2] = !LED_ON; break; case robot::CALIBRATION: // alternating red-green; busy rgb_led[0] = !rgb_led[0]; rgb_led[1] = !rgb_led[0]; rgb_led[2] = !LED_ON; break; case robot::HOMING: // alternating green-blue; busy rgb_led[0] = !LED_ON; rgb_led[1] = !rgb_led[1]; rgb_led[2] = !rgb_led[1]; break; case robot::READY: // continuous green rgb_led[0] = !LED_ON; rgb_led[1] = LED_ON; rgb_led[2] = !LED_ON; break; case robot::DEMO: // alternating red-blue; busy rgb_led[0] = !rgb_led[0]; rgb_led[1] = !LED_ON; rgb_led[2] = !rgb_led[0]; break; case robot::MANUAL: // alternating green-purple rgb_led[0] = !rgb_led[0]; rgb_led[1] = !rgb_led[0]; rgb_led[2] = rgb_led[0]; break; } } /** * Switching UI state to a new state */ void SwitchState(State new_state) { serial.printf("* Switching INPUT State to: %s\r\n",StateNames[new_state]); state = new_state; } void InterruptSwitch2() { if (robot::has_power()) { robot::Stop(); } else { robot::Start(); } } void InterruptSwitch3() { switch (state) { case STATE_SWITCHING: robot::GoToNextState(); break; } } } // end namespace ui