script zover
Dependencies: HIDScope MODSERIAL mbed
main.cpp
- Committer:
- wiesdat
- Date:
- 2014-10-20
- Revision:
- 8:37563d2ec529
- Parent:
- 7:5f1c0bcd3f69
- Child:
- 9:cc60d28643cb
File content as of revision 8:37563d2ec529:
#include "mbed.h" #include "MODSERIAL.h" #include "HIDScope.h" #include <iostream> #define A1LP1 0.018180963222803 #define A0LP1 0.016544013176248 #define B1LP1 -1.718913340044714 #define B0LP1 0.753638316443765 #define A1HP1 -1.999801878951505 #define A0HP1 0.999801878951505 #define B1HP1 -1.971717601075000 #define B0HP1 0.972111984032897 #define A0N 0.99436777112 #define A1N -1.89139989664 #define A2N 0.99436777112 #define B1N 1.89070035439 #define B2N -0.988036 #define TSAMP 0.001 AnalogIn emg0(PTB1); MODSERIAL pc(USBTX,USBRX); HIDScope scope(5); Ticker timer; float emg_value, ylp1, yhp1, yn; volatile bool looptimerflag; float ysum = 0, yave=0 ; float readEMG() { emg_value=emg0.read(); return emg_value; } float notchfilter(float ylp1) { static float yn,x1=0,x2=0,y1=0,y2=0,x; x = ylp1; yn = A0N*x + A1N*x1+A2N*x2+B1N*y1+B2N*y2; x2 = x1; x1 = x; y2 = y1; y1 = yn; return yn; } float hpfilter1(float yn) { static float x1=0,y1=0,x2=0, y2=0,x; x = yn; yhp1 = x + A1HP1*x1 + A0HP1*x2 - B1HP1*y1 - B0HP1*y2; x2 = x1; x1 = x; y2 = y1; y1 = yhp1; return yhp1; } float lpfilter1(float yhp1) { static float x1=0,y1=0,x2=0, y2=0,x; x = yhp1; ylp1 = A1LP1*x1-B1LP1*y1+A0LP1*x2-B0LP1*y2; x2 = x1; x1 = x; y2 = y1; y1 = ylp1; return ylp1; } void viewer() { scope.set(0,emg_value); scope.set(1,yhp1); scope.set(2,ylp1); scope.set(3,yn); scope.set(4,yave); scope.send(); } void setlooptimerflag(void) { looptimerflag = true; } int main() { pc.baud(115200); timer.attach(setlooptimerflag,TSAMP); int n = 0; while(1) { while(!looptimerflag) /* do nothing */; looptimerflag = false; emg_value = readEMG(); yn = notchfilter(emg_value); yhp1 = hpfilter1(yn); //function hpfilter ylp1 = lpfilter1(yhp1); //function filter ysum = ysum+yn; n++; if(n==100) { yave = ysum/100; ysum = 0; n = 0; } viewer(); //functie hidscope } }