Thomas Plaisier / Mbed 2 deprecated G3_Barry_Plotter.

Dependencies:   MODSERIAL mbed Encoder

Committer:
Socrates
Date:
Wed Oct 16 15:00:40 2013 +0000
Revision:
4:513c33bba011
Parent:
3:935347ab4e12
Child:
5:1a1ce2f5cb66
Werkende filters. High 1e op 1 hz, low 2e op 2 hz.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Socrates 0:b13a317308d1 1 #include "mbed.h"
Socrates 0:b13a317308d1 2 #include "MODSERIAL.h"
Socrates 0:b13a317308d1 3
Socrates 0:b13a317308d1 4 AnalogIn emg(PTB0);
Socrates 0:b13a317308d1 5 MODSERIAL pc(USBTX,USBRX);
Socrates 0:b13a317308d1 6
Socrates 0:b13a317308d1 7 volatile bool looptimerflag;
Socrates 0:b13a317308d1 8
Socrates 0:b13a317308d1 9 void setlooptimerflag(void)
Socrates 0:b13a317308d1 10 {
Socrates 0:b13a317308d1 11 looptimerflag = true;
Socrates 0:b13a317308d1 12 }
Socrates 0:b13a317308d1 13
Socrates 0:b13a317308d1 14
Socrates 0:b13a317308d1 15 int main()
Socrates 0:b13a317308d1 16 {
Socrates 0:b13a317308d1 17 Ticker looptimer;
Socrates 1:34202d107458 18 const float ts=0.001;
Socrates 1:34202d107458 19 looptimer.attach(setlooptimerflag,ts);
Socrates 4:513c33bba011 20 float x,y,y1,y2,x1,z,z1,z2,yabs,yabs1,yabs2,k,numh1,numh2,denh1,denh2,numl1,numl2,numl3,denl1,denl2,denl3;
Socrates 0:b13a317308d1 21 x1=0;
Socrates 0:b13a317308d1 22 y1=0;
Socrates 4:513c33bba011 23 y2=0;
Socrates 0:b13a317308d1 24 z1=0;
Socrates 4:513c33bba011 25 z2=0;
Socrates 0:b13a317308d1 26 yabs1=0;
Socrates 4:513c33bba011 27 yabs2=0;
Socrates 2:3dab90d3aac2 28
Socrates 2:3dab90d3aac2 29 numh1=0.996868235770807;
Socrates 2:3dab90d3aac2 30 numh2=-0.996868235770807;
Socrates 2:3dab90d3aac2 31 //denh1=1;
Socrates 2:3dab90d3aac2 32 denh2=-0.993736471541615;
Socrates 4:513c33bba011 33 numl1=0.391302053991682*pow(10.0,-4.0);
Socrates 4:513c33bba011 34 numl2=0.782604107983365*pow(10.0,-4.0);
Socrates 4:513c33bba011 35 numl3=0.391302053991682*pow(10.0,-4.0);
Socrates 2:3dab90d3aac2 36 //denl1=1;
Socrates 4:513c33bba011 37 denl2=-1.982228929792529;
Socrates 4:513c33bba011 38 denl3=0.982385450614126;
Socrates 0:b13a317308d1 39 pc.baud(115200);
Socrates 0:b13a317308d1 40
Socrates 0:b13a317308d1 41 while(1) {
Socrates 0:b13a317308d1 42 while(looptimerflag != true);
Socrates 0:b13a317308d1 43 looptimerflag = false;
Socrates 1:34202d107458 44 k=emg.read();
Socrates 1:34202d107458 45 x=(k-0.5)*2.0;
Socrates 2:3dab90d3aac2 46
Socrates 1:34202d107458 47 //High pass, 1 Hz
Socrates 4:513c33bba011 48 //1e orde
Socrates 2:3dab90d3aac2 49 y=x*numh1+x1*numh2-y1*denh2;
Socrates 4:513c33bba011 50
Socrates 1:34202d107458 51 //Rectify
Socrates 0:b13a317308d1 52 yabs=abs(y);
Socrates 1:34202d107458 53
Socrates 4:513c33bba011 54 //Low pass, 2 Hz
Socrates 4:513c33bba011 55 //2e orde
Socrates 4:513c33bba011 56 z=yabs*numl1+yabs1*numl2+yabs2*numl3-z1*denl2-z2*denl3;
Socrates 1:34202d107458 57
Socrates 2:3dab90d3aac2 58 pc.printf("%f\n\r",z);
Socrates 0:b13a317308d1 59 x1=x;
Socrates 4:513c33bba011 60 y2=y1;
Socrates 0:b13a317308d1 61 y1=y;
Socrates 4:513c33bba011 62 z2=z1;
Socrates 0:b13a317308d1 63 z1=z;
Socrates 4:513c33bba011 64 yabs2=yabs;
Socrates 0:b13a317308d1 65 yabs1=yabs;
Socrates 0:b13a317308d1 66 }
Socrates 0:b13a317308d1 67 }