Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed QEI HIDScope biquadFilter MODSERIAL FastPWM
main.cpp
- Committer:
- JordanO
- Date:
- 2019-10-03
- Revision:
- 13:f90e31c6af2b
- Parent:
- 12:d13ce121a781
- Child:
- 14:1a695fc45fc6
File content as of revision 13:f90e31c6af2b:
//Libraries #include "mbed.h" #include "FastPWM.h" #include "HIDScope.h" #include "MODSERIAL.h" #include "QEI.h" //Objects //LED DigitalOut ledb(LED_BLUE); // ledb=true & ledb=1 is led off!! DigitalOut ledg(LED_GREEN); DigitalOut ledr(LED_RED); //Motors //Sensors //Buttons InterruptIn button1(SW2); //button on the side of the reset button InterruptIn button2(SW3); //button on the side opposite of the reset button //PC Serial pc(USBTX,USBRX); //Variables enum States {MovementIdle, CalibrationIdle, Demo, Startup, CalibrationPhysical, CalibrationEMG, Move, TiltCup, FailState}; States CurrentState; volatile char ledcolor; //r is red, b is blue, g is green, t is bluegreen, p is purple volatile int errorCode; //Tickers Ticker Main_Ticker; Ticker Tick_Blinky;//used for the blinking of the leds //Led FLicker void FlipLED(void) { pc.printf("FLIPLED \r\n"); switch(ledcolor) { case 'r': ledr = !ledr; ledg = true; ledb = true; break; case 'b': ledr = true; ledg = true; ledb = !ledb; break; case 'g': ledr = true; ledg = !ledg; ledb = true; break; case 't': ledr = true; ledg = !ledg; ledb = !ledb; break; case 'p': ledr = !ledr; ledg = true; ledb = !ledb; break; default: errorCode = 1; pc.printf("Error 1: Color not defined"); } pc.printf("Color %c \r\n",ledcolor); } void Run_StateChangerButton1() { switch(CurrentState) { case Startup: CurrentState = CalibrationPhysical; break; case CalibrationPhysical: CurrentState = CalibrationIdle; break; case CalibrationIdle: CurrentState = CalibrationEMG; break; case CalibrationEMG: CurrentState = MovementIdle; break; case MovementIdle: CurrentState = TiltCup; break; case TiltCup: CurrentState = MovementIdle; break; case Move: CurrentState = MovementIdle; break; } } void Run_StateChangerButton2() { switch(CurrentState) { case CalibrationIdle: CurrentState = Demo; break; case MovementIdle: CurrentState = Move; break; case TiltCup: CurrentState = MovementIdle; break; } } void Run_Demo(void) { pc.printf("Starting Demo ...\r\n"); } void Run_MovementIdle(void) { pc.printf("Starting Idle ...\r\n"); } void Run_CalibrationIdle(void) { pc.printf("Starting Calibration Idle ...\r\n"); } void Run_Startup(void) { pc.printf("Starting Startup ...\r\n"); } void Run_CalibrationPhysical(void) { pc.printf("Starting Calibration Physical ... \r\n"); wait(1); CurrentState = CalibrationIdle; } void Run_CalibrationEMG(void) { pc.printf("Starting Calibration EMG ... \r\n"); } void Run_Move(void) { pc.printf("Starting Move ... \r\n"); } void Run_TiltCup(void) { pc.printf("Starting Calibration TiltCup ... \r\n"); } void Run_FailState(void) { pc.printf("Starting Calibration FailState ... \r\n"); } //State Machine void StateMachine(void) { //Turn off all LEDs switch(CurrentState) { case Demo: ledcolor='t'; Run_Demo(); break; case MovementIdle: ledcolor='b'; Run_MovementIdle(); break; case CalibrationIdle: ledcolor='b'; Run_CalibrationIdle(); break; case Startup: ledcolor='b'; Run_Startup(); break; case CalibrationPhysical: ledcolor='g'; Run_CalibrationPhysical(); break; case CalibrationEMG: ledcolor='g'; Run_CalibrationEMG(); break; case Move: ledcolor='p'; Run_Move(); break; case TiltCup: ledcolor='t'; Run_TiltCup(); break; case FailState: ledcolor='r'; Run_FailState(); break; default: ledcolor='r'; break; } } //Main Loop void mainloop() { StateMachine(); } int main() { //Initialize ledr = true; //ledr.write(.4); ledg = true; //ledg.write(.4); ledb = true; //ledb.write(.4); pc.baud(115200); CurrentState = Startup; button1.mode(PullUp); button1.rise(Run_StateChangerButton1); button2.mode(PullUp); button2.rise(Run_StateChangerButton2); //Tickers Main_Ticker.attach(mainloop,2); Tick_Blinky.attach(FlipLED,.5); while(true) { } }