Emg filter function script for a uni project. Made by Teun van der Molen
Dependencies: HIDScope MODSERIAL mbed
Fork of frdm_EMG by
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); } }