Emg filter function script for a uni project. Made by Teun van der Molen

Dependencies:   HIDScope MODSERIAL mbed

Fork of frdm_EMG by Teun van der Molen

main.cpp

Committer:
teunman
Date:
2015-09-18
Revision:
1:75f61e111ed0
Parent:
0:674026fdd982
Child:
2:ce5ead27b7cc

File content as of revision 1:75f61e111ed0:

#include "mbed.h"
#include "HIDScope.h"
#include "math.h" 
// Define the HIDScope and Ticker object
HIDScope    scope(1);
Ticker      scopeTimer;
Ticker      biquadTicker;

double v1=0, v2=0, u=0, y=0;
const double 
b0 = 0.9999999999999999,b1 = 1.9999999999999998,b2 = 0.9999999999999999, a1 = 1.9999999999999998 ,a2 = 0.9999999999999998;
//b0 = 0.02008333102602092 ,b1 = 0.04016666205204184 ,b2 = 0.02008333102602092, a1 = -1.5610153912536877 ,a2 = 0.6413487153577715;


void computeBiquad(){
    double v = u - a1*v1 - a2*v2;
    y= b0*v + b1*v1 +b2*v2;
    v2=v1;
    v1=v;
}
// Read the analog input
AnalogIn    an_in(A0);
AnalogOut   an_out(DAC0_OUT); 
// The data read and send function
void scopeSend()
{
    scope.set(0,an_in.read());
    scope.send();
}
 
int main()
{
    // Attach the data read and send function at 100 Hz
    scopeTimer.attach_us(&scopeSend, 1e4);   
    //biquadTicker.attach(&computeBiquad,0.01f);
     float i = 1;
    while(1) {
            // sinewave output
          float u = 0.5 + 0.5*sin(i); 
           double v = u - a1*v1 - a2*v2;
    y= b0*v + b1*v1 +b2*v2;
    v2=v1;
    v1=v;
       
            i = i+0.01;
            an_out = y;
            wait(0.01);
     
    }
}