Het EMG verwerkingsdeel
Dependencies: mbed
Diff: main.cpp
- Revision:
- 0:3db1f2a9d605
- Child:
- 1:3cc91fc2fb1c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Oct 26 07:47:32 2018 +0000 @@ -0,0 +1,98 @@ +#include "mbed.h" + +// inputs EMG +AnalogIn emg0( A0 ); +AnalogIn emg1( A1 ); +AnalogIn emg3( A2 ); + +// Variabelen EMG +const double a1 = +const double a2 = +const double b0 = +const double b1 = +const double b2 = +const double c1 = +const double c2 = +const double d0 = +const double d1 = +const double d2 = + +double highpassFilter1 = 0; +double lowpassFilter1 = 0; +double highpassFilter2 = 0; +double lowpassFilter2 = 0; + +// Filteren +void filterEMG() +{ +highpassFilter1 = fabs(biquad(emg0.read(), a1, a2, b0, b1, b2)); +lowpassFilter1 = biquad(highpassFilter1, c1, c2, d0, d1, d2); +highpassFilter2 = fabs(biquad(emg1.read(), a1, a2, b0, b1, b2)); +lowpassFilter2 = biquad(highpassFilter2, c1, c2, d0, d1, d2); +highpassFilter3 = fabs(biquad(emg2.read(), a1, a2, b0, b1, b2)); +lowpassFilter3 = biquad(highpassFilter3, c1, c2, d0, d1, d2); +} + +//calibrate (hier moet iets met maximale waarden enzo +dempelwaarde = int 0.5 * max_lowpassFilter3 + +//Direction control +enum direction {Pos_RB, Pos_LB, Pos_RO, Pos_LO}; +direction currentdirection = Pos_RB; +bool directionchanged = true; + +int main() +{ + while () + { + switch (currentdirection) + { + case Pos_RB: + + lowpassFilter1 = lowpassFilter1; + lowpassFilter2 = lowpassFilter2; + + if (lowpassFilter3 > drempelwaarde) + { + currentdirection == Pos_LB; + cirectionchanged = true; + } + break; + + case Pos_LB: + + lowpassFilter1 = lowpassFilter1 * int -1; + lowpassFilter2 = lowpassFilter2; + + if (lowpassFilter3 > drempelwaarde) + + { + currentdirection == Pos_RO; + cirectionchanged = true; + } + break; + + case Pos_RO: + + lowpassFilter1 = lowpassFilter1; + lowpassFilter2 = lowpassFilter2 * int -1; + + if (lowpassFilter3 > drempelwaarde) + { + currentdirection == Pos_LO; + cirectionchanged = true; + } + break; + + case Pos_LO: + + lowpassFilter1 = lowpassFilter1 * int -1; + lowpassFilter2 = lowpassFilter2 * int -1; + + if (lowpassFilter3 > drempelwaarde) + { + currentdirection == Pos_RB; + cirectionchanged = true; + } + break; +} \ No newline at end of file