EMG controlling calibration + filters biorobotics group 13 BMT

Dependencies:   HIDScope biquadFilter mbed

Revision:
5:e78295b978ab
Parent:
4:8db85182a00d
Child:
6:30698d9be7f8
--- a/main.cpp	Tue Oct 20 10:38:37 2015 +0000
+++ b/main.cpp	Tue Oct 20 10:45:22 2015 +0000
@@ -37,7 +37,7 @@
     return y;
 }
 
-void Filters_bicepleft()
+void Filters_bicepsleft()
 {
     u1 = EMG_bicepsleft.read();
     //Highpass
@@ -63,17 +63,103 @@
     y9 = biquad (u8, flp1_v1, flp1_v2, flp1_a1, flp1_a2, flp1_b0* 0.010386, flp1_b1* 0.010386, flp1_b2* 0.010386);
     u9 = y9;
     final_filter = biquad(u9, flp2_v1, flp2_v2, flp2_a1, flp2_a2, flp2_b0*0.000109, flp2_b1*0.000109, flp2_b2*0.000109);
-    // Send it to scope 
-    scope.set (0, u1);
-    scope.set (1, y7); 
-    scope.set (2, y8);
-    scope.set (3, final_filter);
+    }
+    
+    
+    void Filters_bicepsright()
+{
+    u1 = EMG_bicepsright.read();
+    //Highpass
+    y1 = biquad (u1, fh1_v1, fh1_v2, fh1_a1, fh1_a2, fh1_b0*0.924547, fh1_b1*0.924547, fh1_b2*0.924547);
+    u2 = y1;
+    y2 = biquad (u2, fh2_v1, fh2_v2, fh2_a1, fh2_a2, fh2_b0*0.918885, fh2_b1*0.918885, fh2_b2*0.918885);
+    //Lowpass
+    u3 = y2;
+    y3 = biquad (u3, fl1_v1, fl1_v2, fl1_a1, fl1_a2, fl1_b0*0.165103, fl1_b1*0.165103, fl1_b2*0.165103);
+    u4 = y3;
+    y4 = biquad (u4, fl2_v1, fl2_v2, fl2_a1, fl2_a2, fl2_b0*0.031617, fl2_b1*0.031617, fl2_b2*0.031617);
+    // Notch
+    u5 = y4;
+    y5 = biquad (u5, fno1_v1, fno1_v2, fno1_a1, fno1_a2, fno1_b0*1.004206, fno1_b1*1.004206, fno1_b2*1.004206);
+    u6 = y5;
+    y6 = biquad (u6, fno2_v1, fno2_v2, fno2_a1, fno2_a2, fno2_b0, fno2_b1, fno2_b2);
+    u7 = y6;
+    y7 = biquad (u7, fno3_v1, fno3_v2, fno3_a1, fno3_a2, fno3_b0*0.973227, fno3_b1*0.973227, fno3_b2*0.973227);
+    // Rectify sample 
+    y8 = fabs(y7);
+    // Make it smooth 
+    u8 = y8; 
+    y9 = biquad (u8, flp1_v1, flp1_v2, flp1_a1, flp1_a2, flp1_b0* 0.010386, flp1_b1* 0.010386, flp1_b2* 0.010386);
+    u9 = y9;
+    final_filter = biquad(u9, flp2_v1, flp2_v2, flp2_a1, flp2_a2, flp2_b0*0.000109, flp2_b1*0.000109, flp2_b2*0.000109);
+    }
+    
+    void Filters_legleft()
+{
+    u1 = EMG_legleft.read();
+    //Highpass
+    y1 = biquad (u1, fh1_v1, fh1_v2, fh1_a1, fh1_a2, fh1_b0*0.924547, fh1_b1*0.924547, fh1_b2*0.924547);
+    u2 = y1;
+    y2 = biquad (u2, fh2_v1, fh2_v2, fh2_a1, fh2_a2, fh2_b0*0.918885, fh2_b1*0.918885, fh2_b2*0.918885);
+    //Lowpass
+    u3 = y2;
+    y3 = biquad (u3, fl1_v1, fl1_v2, fl1_a1, fl1_a2, fl1_b0*0.165103, fl1_b1*0.165103, fl1_b2*0.165103);
+    u4 = y3;
+    y4 = biquad (u4, fl2_v1, fl2_v2, fl2_a1, fl2_a2, fl2_b0*0.031617, fl2_b1*0.031617, fl2_b2*0.031617);
+    // Notch
+    u5 = y4;
+    y5 = biquad (u5, fno1_v1, fno1_v2, fno1_a1, fno1_a2, fno1_b0*1.004206, fno1_b1*1.004206, fno1_b2*1.004206);
+    u6 = y5;
+    y6 = biquad (u6, fno2_v1, fno2_v2, fno2_a1, fno2_a2, fno2_b0, fno2_b1, fno2_b2);
+    u7 = y6;
+    y7 = biquad (u7, fno3_v1, fno3_v2, fno3_a1, fno3_a2, fno3_b0*0.973227, fno3_b1*0.973227, fno3_b2*0.973227);
+    // Rectify sample 
+    y8 = fabs(y7);
+    // Make it smooth 
+    u8 = y8; 
+    y9 = biquad (u8, flp1_v1, flp1_v2, flp1_a1, flp1_a2, flp1_b0* 0.010386, flp1_b1* 0.010386, flp1_b2* 0.010386);
+    u9 = y9;
+    final_filter = biquad(u9, flp2_v1, flp2_v2, flp2_a1, flp2_a2, flp2_b0*0.000109, flp2_b1*0.000109, flp2_b2*0.000109);
+    }
+    
+    void Filters_legright()
+{
+    u1 = EMG_legright.read();
+    //Highpass
+    y1 = biquad (u1, fh1_v1, fh1_v2, fh1_a1, fh1_a2, fh1_b0*0.924547, fh1_b1*0.924547, fh1_b2*0.924547);
+    u2 = y1;
+    y2 = biquad (u2, fh2_v1, fh2_v2, fh2_a1, fh2_a2, fh2_b0*0.918885, fh2_b1*0.918885, fh2_b2*0.918885);
+    //Lowpass
+    u3 = y2;
+    y3 = biquad (u3, fl1_v1, fl1_v2, fl1_a1, fl1_a2, fl1_b0*0.165103, fl1_b1*0.165103, fl1_b2*0.165103);
+    u4 = y3;
+    y4 = biquad (u4, fl2_v1, fl2_v2, fl2_a1, fl2_a2, fl2_b0*0.031617, fl2_b1*0.031617, fl2_b2*0.031617);
+    // Notch
+    u5 = y4;
+    y5 = biquad (u5, fno1_v1, fno1_v2, fno1_a1, fno1_a2, fno1_b0*1.004206, fno1_b1*1.004206, fno1_b2*1.004206);
+    u6 = y5;
+    y6 = biquad (u6, fno2_v1, fno2_v2, fno2_a1, fno2_a2, fno2_b0, fno2_b1, fno2_b2);
+    u7 = y6;
+    y7 = biquad (u7, fno3_v1, fno3_v2, fno3_a1, fno3_a2, fno3_b0*0.973227, fno3_b1*0.973227, fno3_b2*0.973227);
+    // Rectify sample 
+    y8 = fabs(y7);
+    // Make it smooth 
+    u8 = y8; 
+    y9 = biquad (u8, flp1_v1, flp1_v2, flp1_a1, flp1_a2, flp1_b0* 0.010386, flp1_b1* 0.010386, flp1_b2* 0.010386);
+    u9 = y9;
+    final_filter = biquad(u9, flp2_v1, flp2_v2, flp2_a1, flp2_a2, flp2_b0*0.000109, flp2_b1*0.000109, flp2_b2*0.000109);
+    }
+// Send signals to HIDScope
+void Filters_EMG {
+    scope.set (0,Filters_bicepsleft);
+    scope.set (1,Filters_bicepsright);
+    scope.set (2,Filters_legleft);
+    scope.set (3,Filters_legright);
     scope.send ();
-    } 
-    
+    }
 Ticker filter;
 int main ()
-{filter.attach_us(Filters,1e3);}
+{filter.attach_us(Filters_EMG,1e3);}