emg2

Dependencies:   HIDScope biquadFilter mbed QEI

Fork of EMG by Tom Tom

main.cpp

Committer:
keeswieriks
Date:
2018-10-29
Revision:
21:931fe86dbf5a
Parent:
20:97059009a491
Child:
22:bcfee9594007

File content as of revision 21:931fe86dbf5a:

#include "mbed.h"
#include "HIDScope.h"
#include "BiQuad.h"

// 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);




// Filteren
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
    filter0();

    Ticker      sample_timer;
    HIDScope    scope( 2 );

    scope.set(0, emg0_in.read() );
    scope.set(1, low);
    scope.send();

}
 

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

void filtered_emg()
{
}


int main() 
{  
    Ticker sample_timer;
    filter0();
    sample_timer.attach(filter0, 0.002);

    while(1) {
        }
}