![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
first test of done filter
Dependencies: biquadFilter mbed HIDScope
main.cpp@11:50ef30ca2b59, 2016-10-31 (annotated)
- Committer:
- s1604554
- Date:
- Mon Oct 31 13:31:41 2016 +0000
- Revision:
- 11:50ef30ca2b59
- Parent:
- 10:bc2c13508fe5
- Child:
- 12:b7025b3a111b
Final filter code (if it does not destroy putty)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
s1604554 | 0:eb47e42019a4 | 1 | #include "mbed.h" |
s1604554 | 0:eb47e42019a4 | 2 | #include "BiQuad.h" |
s1604554 | 0:eb47e42019a4 | 3 | #include "stdlib.h" |
s1604554 | 0:eb47e42019a4 | 4 | #include <iostream> |
s1604554 | 0:eb47e42019a4 | 5 | #include <cmath> |
s1604554 | 0:eb47e42019a4 | 6 | #include <string> |
s1604554 | 1:e7cf79380e24 | 7 | #include "HIDScope.h" |
s1604554 | 0:eb47e42019a4 | 8 | |
s1604554 | 6:7223ff6719b7 | 9 | |
s1604554 | 1:e7cf79380e24 | 10 | AnalogIn emg0(A0); |
carlmaykel | 2:812bb0deedef | 11 | AnalogIn emg1(A1); |
carlmaykel | 2:812bb0deedef | 12 | DigitalOut led1(LED1); |
s1604554 | 9:6196636f8879 | 13 | HIDScope scope( 2 ); |
s1604554 | 7:f99e7ca907f1 | 14 | |
s1604554 | 9:6196636f8879 | 15 | Ticker emgticker; |
s1604554 | 9:6196636f8879 | 16 | |
s1604554 | 9:6196636f8879 | 17 | BiQuadChain bqc; |
s1604554 | 9:6196636f8879 | 18 | BiQuad bq1( 8.17310e-01, 0.00000e+00, -8.17310e-01, -1.57627e-01, -6.34619e-01 ); //bandpass |
s1604554 | 9:6196636f8879 | 19 | BiQuad bq2( 6.68124e-01, -1.27085e+00, 6.68124e-01, -1.27085e+00, 3.36249e-01 ); //notchnotch |
s1604554 | 10:bc2c13508fe5 | 20 | //there is a rectifier between these two bqc's |
s1604554 | 10:bc2c13508fe5 | 21 | //gives you new highfrequency noise, so lowpass afterwards |
s1604554 | 1:e7cf79380e24 | 22 | |
s1604554 | 9:6196636f8879 | 23 | BiQuadChain bqc2; |
s1604554 | 11:50ef30ca2b59 | 24 | BiQuad bq3( 2.00834e-02, 4.01667e-02, 2.00834e-02, -1.56102e+00, 6.41352e-01 ); //lowpass |
s1604554 | 8:3c9f2e6ea1cd | 25 | |
s1604554 | 6:7223ff6719b7 | 26 | |
s1604554 | 1:e7cf79380e24 | 27 | |
s1604554 | 0:eb47e42019a4 | 28 | |
s1604554 | 1:e7cf79380e24 | 29 | void Sample () |
s1604554 | 1:e7cf79380e24 | 30 | { |
s1604554 | 1:e7cf79380e24 | 31 | |
s1604554 | 1:e7cf79380e24 | 32 | double emgSignal = emg0.read(); |
s1604554 | 6:7223ff6719b7 | 33 | |
s1604554 | 1:e7cf79380e24 | 34 | |
s1604554 | 4:81f889cd0c2e | 35 | double emgFiltered1 = bqc.step(emgSignal); |
s1604554 | 4:81f889cd0c2e | 36 | double emgFiltered2 = fabs(emgFiltered1); |
s1604554 | 9:6196636f8879 | 37 | double emgFiltered3 = bqc2.step(emgFiltered2); |
s1604554 | 0:eb47e42019a4 | 38 | |
s1604554 | 6:7223ff6719b7 | 39 | scope.set(0, emgSignal); |
s1604554 | 9:6196636f8879 | 40 | scope.set(1, emgFiltered3); |
s1604554 | 6:7223ff6719b7 | 41 | scope.send(); |
s1604554 | 7:f99e7ca907f1 | 42 | |
s1604554 | 11:50ef30ca2b59 | 43 | if (emgFiltered3 >= 0.1) |
s1604554 | 7:f99e7ca907f1 | 44 | |
s1604554 | 7:f99e7ca907f1 | 45 | { |
s1604554 | 6:7223ff6719b7 | 46 | led1 = !led1; |
s1604554 | 11:50ef30ca2b59 | 47 | |
s1604554 | 11:50ef30ca2b59 | 48 | |
s1604554 | 11:50ef30ca2b59 | 49 | emgFiltered3 = true; |
s1604554 | 7:f99e7ca907f1 | 50 | |
s1604554 | 6:7223ff6719b7 | 51 | } |
s1604554 | 6:7223ff6719b7 | 52 | } |
s1604554 | 6:7223ff6719b7 | 53 | |
s1604554 | 6:7223ff6719b7 | 54 | int main() |
s1604554 | 6:7223ff6719b7 | 55 | { |
s1604554 | 7:f99e7ca907f1 | 56 | |
s1604554 | 11:50ef30ca2b59 | 57 | led1 = 1; |
s1604554 | 11:50ef30ca2b59 | 58 | |
s1604554 | 7:f99e7ca907f1 | 59 | |
s1604554 | 11:50ef30ca2b59 | 60 | bqc.add( &bq1 ).add( &bq2 ); |
s1604554 | 11:50ef30ca2b59 | 61 | bqc2.add( &bq3 ); |
s1604554 | 11:50ef30ca2b59 | 62 | emgticker.attach(&Sample, 0.001); |
s1604554 | 7:f99e7ca907f1 | 63 | |
s1604554 | 7:f99e7ca907f1 | 64 | |
s1604554 | 6:7223ff6719b7 | 65 | while (true) { |
s1604554 | 6:7223ff6719b7 | 66 | |
s1604554 | 6:7223ff6719b7 | 67 | } |
s1604554 | 6:7223ff6719b7 | 68 | } |