Jorn Dokter / Mbed 2 deprecated TEB_branch2

Dependencies:   mbed QEI HIDScope biquadFilter MODSERIAL FastPWM

Committer:
JordanO
Date:
Wed Oct 02 13:49:25 2019 +0000
Revision:
10:ad2da21a102c
Parent:
9:cb88b16a97d5
Child:
11:32deb48774f7
Button intterupt

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JornD 8:ccd58f78b5cb 1 //Libraries
JordanO 10:ad2da21a102c 2 #include "mbed.h"
JordanO 10:ad2da21a102c 3 #include "FastPWM.h"
JordanO 10:ad2da21a102c 4 #include "HIDScope.h"
JordanO 10:ad2da21a102c 5 #include "MODSERIAL.h"
JordanO 10:ad2da21a102c 6 #include "QEI.h"
JornD 8:ccd58f78b5cb 7
JordanO 10:ad2da21a102c 8 //Objects
JordanO 10:ad2da21a102c 9 //LED
JordanO 10:ad2da21a102c 10 DigitalOut ledb(LED_BLUE); // ledb=true & ledb=1 is led off!!
JordanO 10:ad2da21a102c 11 DigitalOut ledg(LED_GREEN);
JordanO 10:ad2da21a102c 12 DigitalOut ledr(LED_RED);
JordanO 10:ad2da21a102c 13 //Motors
JordanO 10:ad2da21a102c 14
JordanO 10:ad2da21a102c 15 //Sensors
JordanO 10:ad2da21a102c 16
JordanO 10:ad2da21a102c 17 //Buttons
JordanO 10:ad2da21a102c 18 InterruptIn button2(SW2); //button on the side of the reset button
JordanO 10:ad2da21a102c 19 InterruptIn button3(SW3); //button on the side opposite of the reset button
JornD 8:ccd58f78b5cb 20
JordanO 10:ad2da21a102c 21 //Variables
JordanO 10:ad2da21a102c 22 enum States {MovementIdle, CalibrationIdle, Demo, Startup, CalibrationPhysical, CalibrationEMG, Move, TiltCup, FailState};
JordanO 10:ad2da21a102c 23 States CurrentState;
JordanO 10:ad2da21a102c 24
JordanO 10:ad2da21a102c 25 volatile char ledcolor; //r is red, b is blue, g is green, t is bluegreen, p is purple
JordanO 10:ad2da21a102c 26
JornD 9:cb88b16a97d5 27
JordanO 10:ad2da21a102c 28
JordanO 10:ad2da21a102c 29 //Tickers
JordanO 10:ad2da21a102c 30 Ticker Main_Ticker;
JordanO 10:ad2da21a102c 31 Ticker Tick_Blinky;//used for the blinking of the leds
JordanO 10:ad2da21a102c 32
JordanO 10:ad2da21a102c 33
JordanO 10:ad2da21a102c 34
JornD 1:a5c1140f464a 35
JornD 8:ccd58f78b5cb 36 //Led FLicker
JornD 8:ccd58f78b5cb 37 void FlipLED(void)
JornD 8:ccd58f78b5cb 38 {
JornD 8:ccd58f78b5cb 39 switch(ledcolor)
JornD 8:ccd58f78b5cb 40 {
JornD 8:ccd58f78b5cb 41 case 'r':
JornD 8:ccd58f78b5cb 42 ledr =! ledr;
JornD 8:ccd58f78b5cb 43 ledg = true;
JornD 8:ccd58f78b5cb 44 ledb = true;
JornD 8:ccd58f78b5cb 45 break;
JornD 8:ccd58f78b5cb 46 case 'b':
JornD 8:ccd58f78b5cb 47 ledr = true;
JornD 8:ccd58f78b5cb 48 ledg = true;
JornD 8:ccd58f78b5cb 49 ledb =! ledb;
JornD 8:ccd58f78b5cb 50 break;
JornD 8:ccd58f78b5cb 51 case 'g':
JornD 8:ccd58f78b5cb 52 ledr = true;
JornD 8:ccd58f78b5cb 53 ledg =! ledg;
JornD 8:ccd58f78b5cb 54 ledb = true;
JornD 8:ccd58f78b5cb 55 case 't':
JornD 8:ccd58f78b5cb 56 ledr = true;
JornD 8:ccd58f78b5cb 57 ledg =! ledg;
JornD 8:ccd58f78b5cb 58 ledb =! ledb;
JornD 8:ccd58f78b5cb 59 break;
JornD 8:ccd58f78b5cb 60 case 'p':
JornD 8:ccd58f78b5cb 61 ledr =! ledr;
JornD 8:ccd58f78b5cb 62 ledg = true;
JornD 8:ccd58f78b5cb 63 ledb =! ledb;
JornD 8:ccd58f78b5cb 64 break;
JornD 8:ccd58f78b5cb 65 }
JornD 8:ccd58f78b5cb 66 }
JornD 8:ccd58f78b5cb 67
JornD 2:6d026d5655c5 68 void Run_Demo(void)
JornD 2:6d026d5655c5 69 {
JordanO 10:ad2da21a102c 70 pc.prinf("Starting Demo ...\r\n")
JornD 5:77929f5f1f32 71 }
JornD 2:6d026d5655c5 72
JornD 5:77929f5f1f32 73 void Run_MovementIdle(void)
JornD 5:77929f5f1f32 74 {
JordanO 10:ad2da21a102c 75 pc.prinf("Starting Idle ...\r\n")
JornD 5:77929f5f1f32 76 }
JornD 5:77929f5f1f32 77
JornD 5:77929f5f1f32 78 void Run_CalibrationIdle(void)
JornD 5:77929f5f1f32 79 {
JordanO 10:ad2da21a102c 80 pc.prinf("Starting Calibration Idle ...\r\n")
JornD 5:77929f5f1f32 81 }
JornD 5:77929f5f1f32 82
JornD 5:77929f5f1f32 83 void Run_Startup(void)
JornD 5:77929f5f1f32 84 {
JordanO 10:ad2da21a102c 85 pc.prinf("Starting Startup ...\r\n")
JornD 2:6d026d5655c5 86 }
JornD 2:6d026d5655c5 87
JornD 5:77929f5f1f32 88 void Run_CalibrationPhysical(void)
JornD 2:6d026d5655c5 89 {
JordanO 10:ad2da21a102c 90 pc.prinf("Starting Calibration Physical ... \r\n")
JornD 5:77929f5f1f32 91 }
JornD 2:6d026d5655c5 92
JornD 5:77929f5f1f32 93 void Run_CalibrationEMG(void)
JornD 5:77929f5f1f32 94 {
JordanO 10:ad2da21a102c 95 pc.prinf("Starting Calibration EMG ... \r\n")
JornD 2:6d026d5655c5 96 }
JornD 2:6d026d5655c5 97
JornD 5:77929f5f1f32 98 void Run_Move(void)
JornD 5:77929f5f1f32 99 {
JornD 5:77929f5f1f32 100
JornD 5:77929f5f1f32 101 }
JornD 5:77929f5f1f32 102
JornD 5:77929f5f1f32 103 void Run_TiltCup(void)
JornD 5:77929f5f1f32 104 {
JornD 5:77929f5f1f32 105
JornD 5:77929f5f1f32 106 }
JornD 5:77929f5f1f32 107
JornD 5:77929f5f1f32 108 void Run_FailState(void)
Rieks 6:41b02057fc2c 109 {
Rieks 7:af0c16ae48d7 110
JornD 5:77929f5f1f32 111 }
JornD 5:77929f5f1f32 112
JornD 5:77929f5f1f32 113 //State Machine
JornD 2:6d026d5655c5 114 void StateMachine(void)
JornD 2:6d026d5655c5 115 {
JornD 8:ccd58f78b5cb 116 //Turn off all LEDs
JornD 8:ccd58f78b5cb 117 ledr = true;
JornD 8:ccd58f78b5cb 118 ledg = true;
JornD 8:ccd58f78b5cb 119 ledb = true;
JornD 8:ccd58f78b5cb 120
JornD 2:6d026d5655c5 121 switch(CurrentState)
JornD 2:6d026d5655c5 122 {
JornD 2:6d026d5655c5 123 case Demo:
JornD 2:6d026d5655c5 124 Run_Demo;
Rieks 7:af0c16ae48d7 125 ledcolor='t';
JornD 2:6d026d5655c5 126 break;
JornD 5:77929f5f1f32 127 case MovementIdle:
Rieks 6:41b02057fc2c 128 Run_MovementIdle;
Rieks 7:af0c16ae48d7 129 ledcolor='b';
JornD 5:77929f5f1f32 130 break;
JornD 5:77929f5f1f32 131 case CalibrationIdle:
JornD 5:77929f5f1f32 132 Run_CalibrationIdle;
Rieks 7:af0c16ae48d7 133 ledcolor='b';
JornD 5:77929f5f1f32 134 break;
JornD 9:cb88b16a97d5 135 case Startup:
Rieks 6:41b02057fc2c 136 Run_Startup;
Rieks 7:af0c16ae48d7 137 ledcolor='b';
JornD 5:77929f5f1f32 138 break;
JornD 5:77929f5f1f32 139 case CalibrationPhysical:
JornD 5:77929f5f1f32 140 Run_CalibrationPhysical;
Rieks 7:af0c16ae48d7 141 ledcolor='g';
JornD 5:77929f5f1f32 142 break;
JornD 5:77929f5f1f32 143 case CalibrationEMG:
JornD 5:77929f5f1f32 144 Run_CalibrationEMG;
Rieks 7:af0c16ae48d7 145 ledcolor='g';
JornD 5:77929f5f1f32 146 break;
JornD 5:77929f5f1f32 147 case Move:
JornD 5:77929f5f1f32 148 Run_Move;
Rieks 7:af0c16ae48d7 149 ledcolor='p';
JornD 5:77929f5f1f32 150 break;
JornD 5:77929f5f1f32 151 case TiltCup:
JornD 5:77929f5f1f32 152 Run_TiltCup;
Rieks 7:af0c16ae48d7 153 ledcolor='t';
JornD 5:77929f5f1f32 154 break;
JornD 5:77929f5f1f32 155 case FailState:
JornD 5:77929f5f1f32 156 Run_FailState;
Rieks 7:af0c16ae48d7 157 ledcolor='r';
JornD 2:6d026d5655c5 158 break;
JornD 2:6d026d5655c5 159 }
JornD 2:6d026d5655c5 160 }
JornD 1:a5c1140f464a 161
JornD 5:77929f5f1f32 162 //Main Loop
JornD 8:ccd58f78b5cb 163 void mainloop()
JornD 8:ccd58f78b5cb 164 {
JornD 9:cb88b16a97d5 165 StateMachine();
JornD 8:ccd58f78b5cb 166 }
JornD 8:ccd58f78b5cb 167
JornD 1:a5c1140f464a 168 int main()
JornD 8:ccd58f78b5cb 169 {
JornD 8:ccd58f78b5cb 170 //Initialize
JornD 8:ccd58f78b5cb 171
JornD 8:ccd58f78b5cb 172 Tick_Blinky.attach(FlipLED,1);
JornD 5:77929f5f1f32 173 CurrentState = Startup;
JornD 9:cb88b16a97d5 174 Main_Ticker.attach(mainloop,2);
JornD 9:cb88b16a97d5 175
JornD 1:a5c1140f464a 176 while(true)
JornD 1:a5c1140f464a 177 {
JornD 8:ccd58f78b5cb 178
JornD 1:a5c1140f464a 179 }
JornD 1:a5c1140f464a 180 }