Hidscope + EMG
Dependencies: HIDScope biquadFilter mbed
main.cpp@2:b2d117949de7, 2018-10-22 (annotated)
- 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?
User | Revision | Line number | New 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 | } |