emg

Dependencies:   HIDScope mbed

Fork of EMG by Kevin Hetterscheid

Revision:
19:34c129b055b6
Parent:
18:e753220c7ba6
--- a/main.cpp	Mon Oct 19 11:44:19 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-#include "mbed.h"
-#include "HIDScope.h"
-
-#define MOV_AVG_NUM     100
-
-//Define objects
-AnalogIn    emg(A0); //Analog input
-Ticker      sample_timer;
-HIDScope    scope(2);
-
-double highV[4];
-double lowV[4];
-double lastOutputs[MOV_AVG_NUM-1];
-
-double filter(double input, double coeff_input[], double coeff_output[], double prev_outputs[])
-{
-    double new_input = input;
-    for(int i=1; i<5; i++) 
-        new_input -= coeff_input[i] * prev_outputs[i-1];
-
-    double new_output = coeff_output[0] * new_input;
-    for(int i=1; i<5; i++) 
-        new_output += coeff_output[i] * prev_outputs[i-1];
-
-    // Set the new output as the first value of the 'recent outputs'
-    for(int i = 3; i > 0; i--)
-        prev_outputs[i] = prev_outputs[i-1];
-    prev_outputs[0] = new_input;
-    return new_output;
-}
-
-double fh_b[]= {0.7602, -3.0406, 4.5609, -3.0406, 0.7602};
-double fh_a[]= {1, -3.4532, 4.5041, -2.6273, 0.5778};
-double highpass_filter(double u)
-{
-    return filter(u, fh_a, fh_b, highV);
-}
-
-double fl_b[]= {0.00000658, 0.00002631, 0.00003947, 0.00002631, 0.00000658};
-double fl_a[]= {1.0000, -3.7264, 5.2160, -3.2500, 0.7605};
-double lowpass_filter(double u)
-{
-    return filter(u, fl_a, fl_b, lowV);
-}
-
-/** Sample function
- * this function samples the emg and sends it to HIDScope
- **/
-void sample()
-{
-    double input = emg.read();
-    double output1 = highpass_filter(input);
-    double output2 = fabs(output1);
-    double output3 = lowpass_filter(output2);
-    
-    double tot = output3;
-    for(int i=0; i<MOV_AVG_NUM-1; i++) {
-        tot += lastOutputs[i];
-        if(i != 0) lastOutputs[i] = lastOutputs[i-1];
-    }
-    lastOutputs[0] = output3;
-    output3 = tot/MOV_AVG_NUM;
-    
-    /* Second, set the sampled emg value in channel zero (the first channel) in the 'HIDScope' variable named 'scope' */
-    scope.set(0,input);
-    scope.set(1,output3);
-    /* Repeat the step above if required for more channels (channel 0 up to 5 = 6 channels) */
-    /* Finally, send all channels to the PC at once */
-    scope.send();
-}
-
-int main()
-{
-    /**Attach the 'sample' function to the timer 'sample_timer'.
-    * this ensures that 'sample' is executed every... 0.002 seconds
-    */
-    sample_timer.attach(&sample, 0.002);
-
-    /*empty loop, sample() is executed periodically*/
-    while(1) {}
-}
\ No newline at end of file