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:
Fri Oct 03 13:05:50 2014 +0000
Parent:
26:9b43d9cb1fb2
Child:
28:f4b09acf78c9
Commit message:
meten van emg biceps en triceps toegevoegd, reset moet nog gedaan worden (in de 2e while(1) {} een if emg_trifloat>0.8 toevoegen en een goto naar de first loop

Changed in this revision

Project_main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/Project_main.cpp	Fri Oct 03 12:40:15 2014 +0000
+++ b/Project_main.cpp	Fri Oct 03 13:05:50 2014 +0000
@@ -1,15 +1,20 @@
 #include "mbed.h"
 #include "MODSERIAL.h"
 #include "HIDScope.h"
-#define TIMEB4NEXTCHOICE 2
-#define TIMEBETWEENBLINK 20
+#define TIMEB4NEXTCHOICE 1
+#define TIMEBETWEENBLINK 10
 
 //Define objects
-AnalogIn    emg0(PTB1); //Analog input
-PwmOut      emgfloat(PTD4);//Float voor EMG-waarde
-PwmOut      red(LED_RED); //PWM output
+AnalogIn    emg0(PTB1);         //Analog input biceps
+AnalogIn    emg1(PTB2);         //Analog input triceps                          NO IDEA WELKE PTB 
+
+PwmOut      emg_bifloat(PTD4);   //Float voor EMG-waarde biceps
+PwmOut      emg_trifloat(PTA4);  //Float voor EMG-waarde triceps
+
+PwmOut      red(LED_RED);       //PWM output
 PwmOut      green(LED_GREEN);
 PwmOut      blue(LED_BLUE);
+
 int         direction = 0;
 int         force = 0;
 
@@ -33,19 +38,26 @@
 void looper()
 {
     /*variable to store value in*/
-    uint16_t emg_value;
+    uint16_t emg_bivalue;
     /*put raw emg value both in emgfloat and in emg_value*/
-    emgfloat.write(emg0.read());      // read float value (0..1 = 0..3.3V)
-    emg_value = emg0.read_u16(); // read direct ADC result (0..4096 = 0..3.3V)
+    emg_bifloat.write(emg0.read());         // read float value (0..1 = 0..3.3V) biceps
+    emg_bivalue = emg0.read_u16();          // read direct ADC result (0..4096 = 0..3.3V) biceps
+    
+    uint16_t emg_trivalue;
+    /*put raw emg value both in emgfloat and in emg_value*/
+    emg_trifloat.write(emg1.read());        // read float value (0..1 = 0..3.3V) biceps                
+    emg_trivalue = emg1.read_u16();         // read direct ADC result (0..4096 = 0..3.3V) biceps
+    
     /*send value to PC. Line below is used to prevent buffer overrun */
     if(pc.rxBufferGetSize(0)-pc.rxBufferGetCount() > 30)
-        //pc.printf("%u\n",emg_value);
-        scope.set(0,emg_value);
-    scope.set(1,emgfloat.read());
+        //pc.printf("%u\n",emg_value);  
+                                        
+    scope.set(0,emg_bivalue);
+    scope.set(1,emg_bifloat.read());
+    scope.set(2,emg_trivalue);
+    scope.set(3,emg_trifloat.read());
     scope.send();
-    /**When not using the LED, the above could also have been done this way:
-    * pc.printf("%u\n", emg0.read_u16());
-    */
+   
 }
 
 
@@ -53,7 +65,8 @@
 int main()
 {
     pc.baud(115200); //baudrate instellen
-    emgfloat.period_ms(2); //sets period for the PWM to the emgfloat PTD4
+    emg_bifloat.period_ms(2); //sets period for the PWM to the emgfloat PTD4
+    emg_trifloat.period_ms(2);
     log_timer.attach(looper, 0.001); // The looper() function will be called every 0.001 seconds (with the ticker object)
 
     goto directionchoice; // goes to first while(1) for the deciding the direction