emg2
Dependencies: HIDScope biquadFilter mbed QEI
Fork of EMG by
main.cpp
- Committer:
- s1574396
- Date:
- 2018-10-29
- Revision:
- 22:bcfee9594007
- Parent:
- 21:931fe86dbf5a
- Child:
- 23:dec549767006
File content as of revision 22:bcfee9594007:
#include "mbed.h" #include "HIDScope.h" #include "BiQuad.h" HIDScope scope( 2 ); Ticker sample_timer; // inputs EMG AnalogIn emg0_in( A0 ); AnalogIn emg1_in( A1 ); AnalogIn emg2_in( A2 ); // Variabelen EMG const double m1 =0.5000; const double m2 =-0.8090; const double n0 =0.5000; const double n1 =-0.8090; const double n2 =0; const double a1 =0.9565; const double a2 =-1.9131; const double b0 =0.9565; const double b1 =-1.9112; const double b2 =0.9150; const double c1 =0.0675; const double c2 =0.1349; const double d0 =0.0675; const double d1 =-1.1430; const double d2 =0.4128; double notchFitler1 = 0; double highpassFilter1 = 0; double lowpassFilter1 = 0; double notchFilter2 = 0; double highpassFilter2 = 0; double lowpassFilter2 = 0; // BiQuad values BiQuadChain notch; BiQuad N1( m1, m2, n0, n1, n2); BiQuad N2( m1, m2, n0, n1, n2); BiQuad N3( m1, m2, n0, n1, n2); BiQuadChain highpass; BiQuad H1( a1, a2, b0, b1, b2); BiQuad H2( a1, a2, b0, b1, b2); BiQuad H3( a1, a2, b0, b1, b2); BiQuadChain lowpass; BiQuad L1( c1, c2, d0, d1, d2); BiQuad L2( c1, c2, d0, d1, d2); BiQuad L3( c1, c2, d0, d1, d2); // Filter of the first EMG signal void filter0() { double emg0; double notch; double high; double absolute; double low; emg0 = emg0_in.read(); //reading the EMG signal notch = N1.step(emg0); //Applying a notch filter over the EMG data high = H1.step(notch); //Applying a high pass filter absolute = fabs(high); //Rectifying the data low = L1.step(absolute); //Applying low pass filter } //Filter of the second EMG signal void filter1(){ double emg1; double notch; double high; double absolute; double low; emg1 = emg1_in.read(); //reading the EMG signal notch = N2.step(emg1); //Applying a notch filter over the EMG data high = H2.step(notch); //Applying a high pass filter absolute = fabs(high); //Rectifying the data low = L2.step(absolute); //Applying low pass filter } //Filter of the third EMG signal void filter2() { double emg2; double notch; double high; double absolute; double low; emg2 = emg2_in.read(); //reading the EMG signal notch = N3.step(emg2); //Applying a notch filter over the EMG data high = H3.step(notch); //Applying a high pass filter absolute = fabs(high); //Rectifying the data low = L3.step(absolute); //Applying low pass filter } //Combining the filters in one fuction void filtered_emg() { filter0(); filter1(); filter2(); } int main() { sample_timer.attach(&filter0, 0.002); while(1) { } }