EMG filtering; highpass, notch, abs, moving average

Dependencies:   HIDScope MODSERIAL- mbed-dsp mbed

Files at this revision

API Documentation at this revision

Comitter:
Hooglugt
Date:
Tue Oct 07 13:39:45 2014 +0000
Parent:
35:c3182df00ec8
Child:
37:2d248e64b745
Commit message:
alle code in main groen gemaakt en oude wbuysman script ingezet

Changed in this revision

Project_main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/Project_main.cpp	Tue Oct 07 13:01:09 2014 +0000
+++ b/Project_main.cpp	Tue Oct 07 13:39:45 2014 +0000
@@ -2,8 +2,8 @@
 #include "MODSERIAL.h"
 #include "HIDScope.h"
 
-#define TIMEB4NEXTCHOICE 1  // 1s keuzelampje blijft aan
-#define TIMEBETWEENBLINK 10 // 1s voor volgende blink
+#define TIMEB4NEXTCHOICE 5  // 1s keuzelampje blijft aan
+#define TIMEBETWEENBLINK 50 // 1s voor volgende blink
 
 //Define objects
 AnalogIn    emg0(PTB1);         //Analog input biceps
@@ -40,9 +40,9 @@
     if(pc.rxBufferGetSize(0)-pc.rxBufferGetCount() > 30) { //VRAAG: praktisch nut hiervan? print emg value wanneer buffercount groter dan 30 is
         //pc.printf("%u\n",emg_bivalue);
     }
-    
+
     /* EMG-singaal van biceps en triceps worden hier gefilterd*/
-    
+
     scope.set(0,emg_bivalue);
     scope.set(1,emg_bifloat.read());
     scope.set(2,emg_trivalue);
@@ -69,24 +69,20 @@
     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); //
 
-    goto directionchoice; // goes to first while(1) for the deciding the direction
-
-    while(1) { //Loop keuze DIRECTION
-directionchoice:
+    while(1) { //Loop
         for(int i=1; i<4; i++) {
             if(i==1) {           //red
                 red=0;
                 green=1;
                 blue=1;
-                for (int lag=0; lag<TIMEBETWEENBLINK; lag++) {
-                    if(emg_bifloat.read()>0.8) {                   // 0.8 klopt niet als grenswaarde. #nofilter
+                for (int lag=0; lag<50; lag++) {
+                    if(emg_bifloat.read()>0.8) {                    // 0.8 klopt niet als grenswaarde. #nofilter
                         direction = 1;
-                        red=1;
+                        blue = 0;
                         green = 0;
-                        blue = 0;
-                        pc.printf("links ");
-                        wait(TIMEB4NEXTCHOICE);                 // Tijdelijke wait om cyaan lampje aan te zetten ter controle selectie
-                        goto forcechoice;                       // goes to second while(1) for the deciding the force
+                        red=1;
+                        wait(2);                            // Tijdelijke wait om oranje lampje aan te zetten ter controle selectie
+                        goto forcechoice;
                     } else {
                         wait(0.1);
                     }
@@ -96,14 +92,13 @@
                 red =1;
                 green=0;
                 blue=1;
-                for (int lag=0; lag<TIMEBETWEENBLINK; lag++) {
+                for (int lag=0; lag<50; lag++) {
                     if(emg_bifloat.read()>0.8) {                    //0.8 klopt niet als grenswaarde. #nofilter
                         direction = 2;
-                        red=0;
+                        blue = 0;
                         green = 1;
-                        blue = 0;
-                        pc.printf("mid ");
-                        wait(TIMEB4NEXTCHOICE);                            // Tijdelijke wait om paars lampje aan te zetten ter controle selectie
+                        red=0;
+                        wait(2);                            // Tijdelijke wait om oranje lampje aan te zetten ter controle selectie
                         goto forcechoice;
                     } else {
                         wait(0.1);
@@ -114,14 +109,13 @@
                 red=1;
                 green=1;
                 blue=0;
-                for (int lag=0; lag<TIMEBETWEENBLINK; lag++) {
+                for (int lag=0; lag<50; lag++) {
                     if(emg_bifloat.read()>0.8) {                    //0.8 klopt niet als grenswaarde. #nofilter
                         direction = 3;
-                        red=0;
+                        blue = 1;
                         green = 0;
-                        blue = 1;
-                        pc.printf("rechts ");
-                        wait(TIMEB4NEXTCHOICE);                            // Tijdelijke wait om oranje lampje aan te zetten ter controle selectie
+                        red=0;
+                        wait(2);                            // Tijdelijke wait om oranje lampje aan te zetten ter controle selectie
                         goto forcechoice;
                     } else {
                         wait(0.1);
@@ -129,78 +123,149 @@
                 }
             }
         }
+
     }
-    while(1) { //Loop keuze FORCE
 forcechoice:
-        for(int j=1; j<4; j++) {
-            if(j==1) {           //red
-                red=0;
-                green=1;
-                blue=1;
-                if(direction==0){                                   //if statement die controleert of direction 0 is (dus of triceps gereset is)
-                    goto directionchoice;
-                }                   
-                for (int lag=0; lag<TIMEBETWEENBLINK; lag++) {
-                    if(emg_bifloat.read()>0.8) {                    // 0.8 klopt niet als grenswaarde. #nofilter
-                        force = 1;
-                        red=1;
-                        green = 0;
-                        blue = 0;
-                        pc.printf("zwak ");
-                        wait(TIMEB4NEXTCHOICE);                            // Tijdelijke wait om cyaan lampje aan te zetten ter controle selectie
-                        goto choicesmade;
-                    } else {
-                        wait(0.1);
+    red = 0;
+    green = 0;
+    blue = 0;
+    wait(5);
+
+
+    /*
+        goto directionchoice; // goes to first while(1) for the deciding the direction
+
+        while(1) { //Loop keuze DIRECTION
+    directionchoice:
+            for(int i=1; i<4; i++) {
+                if(i==1) {           //red
+                    red=0;
+                    green=1;
+                    blue=1;
+                    for (int lag=0; lag<TIMEBETWEENBLINK; lag++) {
+                        if(emg_bifloat.read()>0.8) {                   // 0.8 klopt niet als grenswaarde. #nofilter
+                            direction = 1;
+                            red=1;
+                            green = 0;
+                            blue = 0;
+                            pc.printf("links ");
+                            wait(TIMEB4NEXTCHOICE);                 // Tijdelijke wait om cyaan lampje aan te zetten ter controle selectie
+                            goto forcechoice;                       // goes to second while(1) for the deciding the force
+                        } else {
+                            wait(0.1);
+                        }
                     }
                 }
-            }
-            if(j==2) {           //green
-                red =1;
-                green=0;
-                blue=1;
-                if(direction==0){                                   //if statement die controleert of direction 0 is (dus of triceps gereset is)
-                    goto directionchoice;
-                } 
-                for (int lag=0; lag<TIMEBETWEENBLINK; lag++) {
-                    if(emg_bifloat.read()>0.8) {                    //0.8 klopt niet als grenswaarde. #nofilter
-                        force = 2;
-                        red=0;
-                        green = 1;
-                        blue = 0;
-                        pc.printf("normaal ");
-                        wait(TIMEB4NEXTCHOICE);                            // Tijdelijke wait om paars lampje aan te zetten ter controle selectie
-                        goto choicesmade;
-                    } else {
-                        wait(0.1);
+                if(i==2) {           //green
+                    red =1;
+                    green=0;
+                    blue=1;
+                    for (int lag=0; lag<TIMEBETWEENBLINK; lag++) {
+                        if(emg_bifloat.read()>0.8) {                    //0.8 klopt niet als grenswaarde. #nofilter
+                            direction = 2;
+                            red=0;
+                            green = 1;
+                            blue = 0;
+                            pc.printf("mid ");
+                            wait(TIMEB4NEXTCHOICE);                            // Tijdelijke wait om paars lampje aan te zetten ter controle selectie
+                            goto forcechoice;
+                        } else {
+                            wait(0.1);
+                        }
                     }
                 }
-            }
-            if(j==3) {           //blue
-                red=1;
-                green=1;
-                blue=0;
-                if(direction==0){                                   //if statement die controleert of direction 0 is (dus of triceps gereset is)
-                    goto directionchoice;
-                }                                                   
-                for (int lag=0; lag<TIMEBETWEENBLINK; lag++) {
-                    if(emg_bifloat.read()>0.8) {                    //0.8 klopt niet als grenswaarde. #nofilter
-                        force = 3;
-                        red=0;
-                        green = 0;
-                        blue = 1;
-                        pc.printf("sterk ");
-                        wait(TIMEB4NEXTCHOICE);                            // Tijdelijke wait om oranje lampje aan te zetten ter controle selectie
-                        goto choicesmade;
-                    } else {
-                        wait(0.1);
+                if(i==3) {           //blue
+                    red=1;
+                    green=1;
+                    blue=0;
+                    for (int lag=0; lag<TIMEBETWEENBLINK; lag++) {
+                        if(emg_bifloat.read()>0.8) {                    //0.8 klopt niet als grenswaarde. #nofilter
+                            direction = 3;
+                            red=0;
+                            green = 0;
+                            blue = 1;
+                            pc.printf("rechts ");
+                            wait(TIMEB4NEXTCHOICE);                            // Tijdelijke wait om oranje lampje aan te zetten ter controle selectie
+                            goto forcechoice;
+                        } else {
+                            wait(0.1);
+                        }
                     }
                 }
             }
         }
-    }
-choicesmade:
+        while(1) { //Loop keuze FORCE
+    forcechoice:
+            for(int j=1; j<4; j++) {
+                if(j==1) {           //red
+                    red=0;
+                    green=1;
+                    blue=1;
+                    if(direction==0){                                   //if statement die controleert of direction 0 is (dus of triceps gereset is)
+                        goto directionchoice;
+                    }
+                    for (int lag=0; lag<TIMEBETWEENBLINK; lag++) {
+                        if(emg_bifloat.read()>0.8) {                    // 0.8 klopt niet als grenswaarde. #nofilter
+                            force = 1;
+                            red=1;
+                            green = 0;
+                            blue = 0;
+                            pc.printf("zwak ");
+                            wait(TIMEB4NEXTCHOICE);                            // Tijdelijke wait om cyaan lampje aan te zetten ter controle selectie
+                            goto choicesmade;
+                        } else {
+                            wait(0.1);
+                        }
+                    }
+                }
+                if(j==2) {           //green
+                    red =1;
+                    green=0;
+                    blue=1;
+                    if(direction==0){                                   //if statement die controleert of direction 0 is (dus of triceps gereset is)
+                        goto directionchoice;
+                    }
+                    for (int lag=0; lag<TIMEBETWEENBLINK; lag++) {
+                        if(emg_bifloat.read()>0.8) {                    //0.8 klopt niet als grenswaarde. #nofilter
+                            force = 2;
+                            red=0;
+                            green = 1;
+                            blue = 0;
+                            pc.printf("normaal ");
+                            wait(TIMEB4NEXTCHOICE);                            // Tijdelijke wait om paars lampje aan te zetten ter controle selectie
+                            goto choicesmade;
+                        } else {
+                            wait(0.1);
+                        }
+                    }
+                }
+                if(j==3) {           //blue
+                    red=1;
+                    green=1;
+                    blue=0;
+                    if(direction==0){                                   //if statement die controleert of direction 0 is (dus of triceps gereset is)
+                        goto directionchoice;
+                    }
+                    for (int lag=0; lag<TIMEBETWEENBLINK; lag++) {
+                        if(emg_bifloat.read()>0.8) {                    //0.8 klopt niet als grenswaarde. #nofilter
+                            force = 3;
+                            red=0;
+                            green = 0;
+                            blue = 1;
+                            pc.printf("sterk ");
+                            wait(TIMEB4NEXTCHOICE);                            // Tijdelijke wait om oranje lampje aan te zetten ter controle selectie
+                            goto choicesmade;
+                        } else {
+                            wait(0.1);
+                        }
+                    }
+                }
+            }
+        }
+    choicesmade:
 
-    /* Vanaf hier komt de aansturing van de motor (inclusief de controller)*/
+        /* Vanaf hier komt de aansturing van de motor (inclusief de controller)*/
+    /*
 
     if(direction == 1 && force == 1) {            // links zwak
         pc.printf("links zwak");
@@ -236,5 +301,5 @@
 
     red = 0;
     green = 0;
-    blue = 0;           // wit lampje
+    blue = 0;           // wit lampje */
 }
\ No newline at end of file