Emg filter function script for a uni project. Made by Teun van der Molen
Dependencies: HIDScope MODSERIAL mbed
Diff: main.cpp
- Revision:
- 3:499c71ca30a0
- Parent:
- 2:ce5ead27b7cc
- Child:
- 4:1baefd1397d6
diff -r ce5ead27b7cc -r 499c71ca30a0 main.cpp --- a/main.cpp Mon Sep 21 08:23:37 2015 +0000 +++ b/main.cpp Mon Sep 21 09:37:43 2015 +0000 @@ -2,49 +2,57 @@ #include "HIDScope.h" #include "math.h" // Define the HIDScope and Ticker object -HIDScope scope(1); +HIDScope scope(2); 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; //low-pass Fc = 50hz +//b0 = 0.9999999999999999,b1 = 1.9999999999999998,b2 = 0.9999999999999999, a1 = 1.9999999999999998 ,a2 = 0.9999999999999998; //low-pass Fc = 50hz //b0 = 0.02008333102602092 ,b1 = 0.04016666205204184 ,b2 = 0.02008333102602092, a1 = -1.5610153912536877 ,a2 = 0.6413487153577715; //low-pass Fc = 5hz //b0 = 0.8005910266528649,b1 = -1.6011820533057297,b2 = 0.8005910266528649,a1 = -1.5610153912536877,a2 = 0.6413487153577715; //high-pass Fc = 5hz +b0 = 0.007820199259120319,b1 = 0.015640398518240638,b2 = 0.007820199259120319,a1 = -1.7347238224240125,a2 = 0.7660046194604936; //low-pass Fc = 3hz +//b0 = 0.0009446914586925257,b1 = 0.0018893829173850514,b2 = 0.0009446914586925257,a1 = -1.911196288237583,a2 = 0.914975054072353; //low-pass Fc = 1hz -void computeBiquad(){ - double v = u - a1*v1 - a2*v2; + + + + + +// Read the analog input +AnalogIn an_in(A0); + +AnalogOut an_out(DAC0_OUT); +// The data read and send function +void scopeSend() +{ + scope.set(0,y); + scope.set(1,an_in); + + scope.send(); +} + + void computeBiquad(){ + double v = an_in - 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; + biquadTicker.attach(&computeBiquad,0.01f); + //float i = 1; while(1) { // sinewave output - float u = (0.25 + 0.1*sin(i) + (0.25 + 0.1*sin(100*i))); - double v = u - a1*v1 - a2*v2; - y= b0*v + b1*v1 +b2*v2; - v2=v1; - v1=v; + // float u = (0.25 + 0.1*sin(i) + (0.25 + 0.1*sin(100*i))); - i = i+0.01; - an_out = y; - wait(0.01); - + // i = i+0.01; + // an_out = y; + // wait(0.01); + // double an_in = y; } } \ No newline at end of file