Hidscope + EMG

Dependencies:   HIDScope biquadFilter mbed

Committer:
Iriskolenbrander9
Date:
Mon Oct 22 11:24:54 2018 +0000
Revision:
2:b2d117949de7
Parent:
1:7eadfb7fd5c9
Child:
3:76d32bcfde05
attempt at filtering emg signal with lowpass and highpass filter

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Iriskolenbrander9 0:5ad817857e29 1 #include "mbed.h"
Iriskolenbrander9 0:5ad817857e29 2 #include "HIDScope.h"
Iriskolenbrander9 1:7eadfb7fd5c9 3 #include "BiQuad.h"
Iriskolenbrander9 0:5ad817857e29 4
Iriskolenbrander9 0:5ad817857e29 5 // Define the HIDScope and Ticker object
Iriskolenbrander9 1:7eadfb7fd5c9 6 HIDScope scope(3);
Iriskolenbrander9 0:5ad817857e29 7 Ticker scopeTimer;
Iriskolenbrander9 2:b2d117949de7 8
Iriskolenbrander9 2:b2d117949de7 9 BiQuadChain bqc;
Iriskolenbrander9 1:7eadfb7fd5c9 10 BiQuad bq1(0.2928920553392428, 0.5857841106784856, 0.2928920553392428, -1.3007020142696517e-16,0.17156822135697122);
Iriskolenbrander9 2:b2d117949de7 11 BiQuad bq2(0.9599250424722232, -1.9198500849444464, 0.9599250424722232, -1.9179540214230233, 0.9217461484658696);
Iriskolenbrander9 2:b2d117949de7 12
Iriskolenbrander9 0:5ad817857e29 13 // Read the analog input
Iriskolenbrander9 0:5ad817857e29 14 AnalogIn emg1(A0);
Iriskolenbrander9 0:5ad817857e29 15 AnalogIn emg2(A1);
Iriskolenbrander9 1:7eadfb7fd5c9 16
Iriskolenbrander9 1:7eadfb7fd5c9 17 double emgSample()
Iriskolenbrander9 1:7eadfb7fd5c9 18 {
Iriskolenbrander9 2:b2d117949de7 19 double emgFiltered = bqc.step(emg1.read());
Iriskolenbrander9 1:7eadfb7fd5c9 20 return emgFiltered;
Iriskolenbrander9 1:7eadfb7fd5c9 21 }
Iriskolenbrander9 1:7eadfb7fd5c9 22
Iriskolenbrander9 0:5ad817857e29 23 // The data read and send function
Iriskolenbrander9 0:5ad817857e29 24 void scopeSend()
Iriskolenbrander9 0:5ad817857e29 25 {
Iriskolenbrander9 0:5ad817857e29 26 scope.set(0,emg1.read());
Iriskolenbrander9 0:5ad817857e29 27 scope.set(1,emg2.read());
Iriskolenbrander9 1:7eadfb7fd5c9 28 scope.set(2,emgSample());
Iriskolenbrander9 0:5ad817857e29 29 scope.send();
Iriskolenbrander9 0:5ad817857e29 30 }
Iriskolenbrander9 0:5ad817857e29 31
Iriskolenbrander9 0:5ad817857e29 32 int main()
Iriskolenbrander9 0:5ad817857e29 33 {
Iriskolenbrander9 0:5ad817857e29 34 // Attach the data read and send function at 100 Hz
Iriskolenbrander9 2:b2d117949de7 35 bqc.add( &bq1 ).add( &bq2 );
Iriskolenbrander9 1:7eadfb7fd5c9 36 scopeTimer.attach_us(&scopeSend, 2e3);
Iriskolenbrander9 0:5ad817857e29 37
Iriskolenbrander9 0:5ad817857e29 38 while(1) { }
Iriskolenbrander9 0:5ad817857e29 39 }