emg2

Dependencies:   HIDScope biquadFilter mbed QEI

Fork of EMG by Tom Tom

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) {
        }
}