EMG filtering; highpass, notch, abs, moving average
Dependencies: HIDScope MODSERIAL- mbed-dsp mbed
Revision 32:aaf01b1bf05d, committed 2014-10-07
- Comitter:
- Hooglugt
- Date:
- Tue Oct 07 10:13:12 2014 +0000
- Parent:
- 31:d8eaf0ce8517
- Child:
- 33:a78ec776dfd5
- Commit message:
- duidelijke beschrijvingen toegevoegd van wat er nog gedaan moet worden, vragen, opmerkingen, etc.
Changed in this revision
Project_main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/Project_main.cpp Mon Oct 06 13:27:01 2014 +0000 +++ b/Project_main.cpp Tue Oct 07 10:13:12 2014 +0000 @@ -9,15 +9,15 @@ AnalogIn emg0(PTB1); //Analog input biceps AnalogIn emg1(PTB2); //Analog input triceps -PwmOut emg_bifloat(PTD4); //Float voor EMG-waarde biceps, VRAAG: waarom we hier een PwmOut voor gebruiken +PwmOut emg_bifloat(PTD4); //Float voor EMG-waarde biceps, VRAAG: waarom we hier een PwmOut voor gebruiken - kunnen we geen float gebruiken? PwmOut emg_trifloat(PTA4); //Float voor EMG-waarde triceps PwmOut red(LED_RED); PwmOut green(LED_GREEN); PwmOut blue(LED_BLUE); -int direction = 0; -int force = 0; +int8_t direction = 0; +int8_t force = 0; Ticker log_timer; Ticker reset_timer; @@ -47,7 +47,7 @@ scope.send(); } -void resetlooper() +void resetlooper() // VRAAG: wat gebeurt er wanneer en resetlooper en looper tegelijkertijd gecalled worden?! { if(emg_trifloat.read()>0.8 && direction != 0) { //dit is alleen mogelijk wanneer directionchoice is gemaakt direction = 0; @@ -65,6 +65,8 @@ log_timer.attach(looper, 0.001); // The looper() function will be called every 0.001 seconds (with the ticker object) reset_timer.attach(resetlooper, 0.1); // + /* EMG-singaal van biceps en triceps worden hier gefilterd*/ + goto directionchoice; // goes to first while(1) for the deciding the direction while(1) { //Loop keuze DIRECTION @@ -133,6 +135,7 @@ red=0; green=1; blue=1; + //TE DOEN een if statement die controleert of direction 0 is (dus of triceps gereset is) for (int lag=0; lag<TIMEBETWEENBLINK; lag++) { if(emg_bifloat.read()>0.8) { // 0.8 klopt niet als grenswaarde. #nofilter force = 1; @@ -151,6 +154,7 @@ red =1; green=0; blue=1; + //TE DOEN een if statement die controleert of direction 0 is (dus of triceps gereset is) for (int lag=0; lag<TIMEBETWEENBLINK; lag++) { if(emg_bifloat.read()>0.8) { //0.8 klopt niet als grenswaarde. #nofilter force = 2; @@ -169,6 +173,7 @@ red=1; green=1; blue=0; + //TE DOEN een if statement die controleert of direction 0 is (dus of triceps gereset is) for (int lag=0; lag<TIMEBETWEENBLINK; lag++) { if(emg_bifloat.read()>0.8) { //0.8 klopt niet als grenswaarde. #nofilter force = 3; @@ -186,14 +191,9 @@ } } choicesmade: - - red = 0; - green = 0; - blue = 0; // wit lampje - - if(direction == 0 || force == 0) { - pc.printf("error"); - } + + /* Vanaf hier komt de aansturing van de motor (inclusief de controller)*/ + if(direction == 1 && force == 1) { // links zwak pc.printf("links zwak"); } @@ -221,4 +221,11 @@ if(direction == 3 && force == 3) { // rechts sterk pc.printf("rechts sterk"); } + if(direction == 0 || force == 0) { // wanneer de triceps in de korte tijd is aangespannen nadat beide keuzes zijn gemaakt + pc.printf("error"); + } + + red = 0; + green = 0; + blue = 0; // wit lampje } \ No newline at end of file