not checked because compiler was down, but this should do everything!!!!

Dependencies:   FastPWM HIDScope MODSERIAL QEI biquadFilter mbed

Fork of EMG4 by Remi van Veen

Files at this revision

API Documentation at this revision

Comitter:
relvorelvo
Date:
Wed Nov 02 09:39:07 2016 +0000
Parent:
20:97059009a491
Child:
22:68ab712b62b2
Commit message:
trial

Changed in this revision

MODSERIAL.lib Show annotated file Show diff for this revision Revisions of this file
biquadFilter.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MODSERIAL.lib	Wed Nov 02 09:39:07 2016 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/Sissors/code/MODSERIAL/#4737f8a5b018
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/biquadFilter.lib	Wed Nov 02 09:39:07 2016 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/tomlankhorst/code/biquadFilter/#26861979d305
--- a/main.cpp	Thu Sep 22 08:53:50 2016 +0000
+++ b/main.cpp	Wed Nov 02 09:39:07 2016 +0000
@@ -1,22 +1,59 @@
 #include "mbed.h"
 #include "HIDScope.h"
+#include "BiQuad.h"
+#include "MODSERIAL.h"
 
 //Define objects
-AnalogIn    emg0( A0 );
-AnalogIn    emg1( A1 );
+AnalogIn    emg1_in( A0 );
+AnalogIn    emg2_in( A1 );
 
 Ticker      sample_timer;
-HIDScope    scope( 2 );
-DigitalOut  led(LED1);
+HIDScope    scope( 4 );
+DigitalOut  red(LED_RED);
+DigitalOut  blue(LED_BLUE);
+DigitalOut  green(LED_GREEN);
+MODSERIAL   pc(USBTX, USBRX);
+
+
+// EMG variables
+double emg1;
+double emg1highfilter;
+double emg1notchfilter;
+double emg1abs
+double emg1lowfilter;
+
+double emg2;
+double emg2highfilter;
+double emg2notchfilter;
+double emg2abs
+double emg2lowfilter;
 
-/** Sample function
- * this function samples the emg and sends it to HIDScope
- **/
+// Filter settings
+BiQuad filterhigh(9.704e-01,-1.9408,9.704e-01,-1.9389,9.427e-01);
+BiQuad filternotch(9.495e-01,-1.8062,9.495e-01,-1.8062,8.992e-01)
+BiQuad filterlow(8.883e-01,1.7671,8.835e-01,1.7227,8.114e-01)
+
+// Filtering
+void filter() {
+    emg1=emg1_in.read();
+    emg1highfilter=filterhigh.step(emg1);
+    emg1notchfilter=filternotch.step(emg1highfilter);
+    emg1abs=fabs(emg1notchfilter);
+    emg1lowfilter=filterlow(emg1abs);
+
+    emg2=emg2_in.read();
+    emg2highfilter=filterhigh.step(emg2);
+    emg2notchfilter=filternotch.step(emg2highfilter);
+    emg2abs=fabs(emg2notchfilter);
+    emg2lowfilter=filterlow(emg2abs);
+
 void sample()
 {
     /* Set the sampled emg values in channel 0 (the first channel) and 1 (the second channel) in the 'HIDScope' instance named 'scope' */
-    scope.set(0, emg0.read() );
-    scope.set(1, emg1.read() );
+    scope.set(0, emg1_in.read() );
+    scope.set(1, emg1lowfilter.read() );
+    scope.set(2, emg2_in.read() );
+    scope.set() emg2lowfilter.read() );
     /* Repeat the step above if required for more channels of required (channel 0 up to 5 = 6 channels) 
     *  Ensure that enough channels are available (HIDScope scope( 2 ))
     *  Finally, send all channels to the PC at once */
@@ -30,7 +67,7 @@
     /**Attach the 'sample' function to the timer 'sample_timer'.
     * this ensures that 'sample' is executed every... 0.002 seconds = 500 Hz
     */
-    sample_timer.attach(&sample, 0.002);
+    sample_timer.attach(&sample, 0.001);
 
     /*empty loop, sample() is executed periodically*/
     while(1) {}
--- a/mbed.bld	Thu Sep 22 08:53:50 2016 +0000
+++ b/mbed.bld	Wed Nov 02 09:39:07 2016 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/abea610beb85
\ No newline at end of file
+http://mbed.org/users/mbed_official/code/mbed/builds/aae6fcc7d9bb
\ No newline at end of file