kakding

Dependencies:   HIDScope biquadFilter mbed

Fork of biquad2 by Robert Paassen

main.cpp

Committer:
Paashaas
Date:
2015-10-21
Revision:
2:192bd1385db6
Parent:
1:911daa1a9f4a

File content as of revision 2:192bd1385db6:

#include "mbed.h"
#include "HIDScope.h"
#include "biquadFilter.h" 

AnalogIn emg1(A0); //onderste board
AnalogIn emg2(A1); // 2e board
AnalogIn emg3(A2); // 3e board
AnalogIn emg4(A3); // bovenste board

Ticker sample_ticker; // naam van de emg-ticker

HIDScope scope(3);  // aantal kanalen voor je HIDScope

//highpass filter 20 Hz
const double numhigh_1 = 0.956543225556877;
const double numhigh_2 = -1.91308645113754;
const double numhigh_3 = 0.956543225556877;
const double denhigh_2 = -1.91197067426073;
const double denhigh_3 = 0.9149758348014341;

//notchfilter 50Hz
//biquad 1
const double numnotch_1_1 = 1;
const double numnotch_1_2 = -1.97538661427765;
const double numnotch_1_3 = 1.00000018882502;
const double dennotch_1_2 = -1.97024348390877;
const double dennotch_1_3 = 0.995504923090779;

//biquad 2
const double numnotch_2_1 = 1;
const double numnotch_2_2 = -1.97538624436946;
const double numnotch_2_3 = 1.00000018882502;
const double dennotch_2_2 = -1.97175302143845;
const double dennotch_2_3 = 0.995629024908953;

//lowpass filter 7 Hz  - envelop
const double numlow_1 = 0.000119046743110057;
const double numlow_2 = 0.000238093486220118;
const double numlow_3 = 0.000119046743110057;
const double denlow_2 = -1.968902268531908;
const double denlow_3 = 0.9693784555043481;


double u1 = emg1.read();                //inputvariables
double u2 = emg2.read();
double u3 = emg3.read();
double u4 = emg4.read();


biquadFilter     highpass( denhigh_2 , denhigh_3 , numhigh_1 , numhigh_2 , numhigh_3);                // removes artifacts
biquadFilter     notch1( dennotch_1_2 , dennotch_1_3 , numnotch_1_1 , numnotch_1_2 , numnotch_1_3 );  // removes 49-51 Hz power interference
biquadFilter     notch2( dennotch_2_2 , dennotch_2_3 , numnotch_2_1 , numnotch_2_2 , numnotch_2_3 );   //
biquadFilter     lowpass( denlow_2 , denlow_3 , numlow_1 , numlow_2 , numlow_3 );                     // EMG envelope 

biquadFilter     highpass_2( denhigh_2 , denhigh_3 , numhigh_1 , numhigh_2 , numhigh_3);
biquadFilter     notch1_2( dennotch_1_2 , dennotch_1_3 , numnotch_1_1 , numnotch_1_2 , numnotch_1_3 );  // removes 49-51 Hz power interference
biquadFilter     notch2_2( dennotch_2_2 , dennotch_2_3 , numnotch_2_1 , numnotch_2_2 , numnotch_2_3 );   //
biquadFilter     lowpass_2( denlow_2 , denlow_3 , numlow_1 , numlow_2 , numlow_3 );                     // EMG envelope 

biquadFilter     highpass_3( denhigh_2 , denhigh_3 , numhigh_1 , numhigh_2 , numhigh_3);
biquadFilter     notch1_3( dennotch_1_2 , dennotch_1_3 , numnotch_1_1 , numnotch_1_2 , numnotch_1_3 );  // removes 49-51 Hz power interference
biquadFilter     notch2_3( dennotch_2_2 , dennotch_2_3 , numnotch_2_1 , numnotch_2_2 , numnotch_2_3 );   //
biquadFilter     lowpass_3( denlow_2 , denlow_3 , numlow_1 , numlow_2 , numlow_3 );                     // EMG envelope 

biquadFilter     highpass_4( denhigh_2 , denhigh_3 , numhigh_1 , numhigh_2 , numhigh_3);
biquadFilter     notch1_4( dennotch_1_2 , dennotch_1_3 , numnotch_1_1 , numnotch_1_2 , numnotch_1_3 );  // removes 49-51 Hz power interference
biquadFilter     notch2_4( dennotch_2_2 , dennotch_2_3 , numnotch_2_1 , numnotch_2_2 , numnotch_2_3 );   //
biquadFilter     lowpass_4( denlow_2 , denlow_3 , numlow_1 , numlow_2 , numlow_3 );                     // EMG envelope 

double y5_1, y5_2, y5_3, y5_4;

void myController()
{

double y1_1 = highpass.step ( emg1.read() );
double y2_1 = notch1.step (y1_1);
double y3_1 = notch2.step (y2_1);
double y4_1 = abs(y3_1);
        y5_1 = lowpass.step (y4_1);
    
double y1_2 = highpass_2.step ( emg2.read() );
double y2_2 = notch1_2.step (y1_2);
double y3_2 = notch2_2.step (y2_2);
double y4_2 = abs(y3_2);
        y5_2 = lowpass_2.step (y4_2);
    
double y1_3 =  highpass_3.step ( emg3.read() );
double y2_3 =  notch1_3.step (y1_3);
double y3_3 =  notch2_3.step (y2_3);
double y4_3 =  abs(y3_3);
        y5_3 =  lowpass_3.step (y4_3);

    
double y1_4 =  highpass_4.step ( emg4.read() );
double y2_4 =  notch1_4.step (y1_4);
double y3_4 =  notch2_4.step (y2_4);
double y4_4 =  abs(y3_4);
        y5_4 =  lowpass_4.step (y4_4);


scope.set(0,y5_1);
scope.set(1,y5_2);
scope.set(2,y5_3);
scope.send();
}

int main()
{
    sample_ticker.attach(&myController,0.002);
   while (true){}  
}