first test of done filter
Dependencies: biquadFilter mbed HIDScope
main.cpp@1:e7cf79380e24, 2016-10-20 (annotated)
- Committer:
- s1604554
- Date:
- Thu Oct 20 09:58:58 2016 +0000
- Revision:
- 1:e7cf79380e24
- Parent:
- 0:eb47e42019a4
- Child:
- 2:812bb0deedef
- Child:
- 3:af26457c3326
Done in hidscope if it recognizes it, no moving average yet
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 | 1:e7cf79380e24 | 9 | AnalogIn emg0(A0); |
s1604554 | 1:e7cf79380e24 | 10 | // |
s1604554 | 1:e7cf79380e24 | 11 | HIDScope scope(2); |
s1604554 | 1:e7cf79380e24 | 12 | Ticker emgticker; |
s1604554 | 1:e7cf79380e24 | 13 | |
s1604554 | 1:e7cf79380e24 | 14 | |
s1604554 | 0:eb47e42019a4 | 15 | |
s1604554 | 0:eb47e42019a4 | 16 | BiQuadChain bqc; |
s1604554 | 0:eb47e42019a4 | 17 | BiQuad bq1( 9.84534e-01, -1.59301e+00, 9.84534e-01, -1.59301e+00, 9.69067e-01 ); |
s1604554 | 1:e7cf79380e24 | 18 | BiQuad bq2( 9.82385e-01, -1.96477e+00, 9.82385e-01, -1.96446e+00, 9.65081e-01 ); |
s1604554 | 1:e7cf79380e24 | 19 | BiQuad bq3( 1.34871e-03, 2.69742e-03, 1.34871e-03, -1.89346e+00, 8.98859e-01 ); |
s1604554 | 1:e7cf79380e24 | 20 | |
s1604554 | 0:eb47e42019a4 | 21 | |
s1604554 | 1:e7cf79380e24 | 22 | void Sample () |
s1604554 | 1:e7cf79380e24 | 23 | { |
s1604554 | 1:e7cf79380e24 | 24 | |
s1604554 | 1:e7cf79380e24 | 25 | double emgSignal = emg0.read(); |
s1604554 | 0:eb47e42019a4 | 26 | bqc.add( &bq1 ).add( &bq2 ).add( &bq3 ); |
s1604554 | 1:e7cf79380e24 | 27 | |
s1604554 | 1:e7cf79380e24 | 28 | double emgFiltered = bqc.step(emgSignal); |
s1604554 | 0:eb47e42019a4 | 29 | |
s1604554 | 0:eb47e42019a4 | 30 | |
s1604554 | 1:e7cf79380e24 | 31 | //int N = 50; |
s1604554 | 1:e7cf79380e24 | 32 | //double x = 2; |
s1604554 | 1:e7cf79380e24 | 33 | //double average; |
s1604554 | 0:eb47e42019a4 | 34 | |
s1604554 | 1:e7cf79380e24 | 35 | //for (int i = N;i<=10000;i++) |
s1604554 | 1:e7cf79380e24 | 36 | //{ |
s1604554 | 1:e7cf79380e24 | 37 | // average = sqrt(( pow(abs(M[i-49]),x)+pow(abs(M[i-48]),x)+pow(abs(M[i-47]),x)+pow(abs(M[i-46]),x)+pow(abs(M[i-45]),x)+pow(abs(M[i-44]),x)+pow(abs(M[i-43]),x)+pow(abs(M[i-42]),x)+pow(abs(M[i-41]),x)+pow(abs(M[i-40]),x)+pow(abs(M[i-39]),x)+pow(abs(M[i-38]),x)+pow(abs(M[i-37]),x)+pow(abs(M[i-36]),x)+pow(abs(M[i-35]),x)+pow(abs(M[i-34]),x)+pow(abs(M[i-33]),x)+pow(abs(M[i-32]),x)+pow(abs(M[i-31]),x)+pow(abs(M[i-30]),x)+pow(abs(M[i-29]),x)+pow(abs(M[i-28]),x)+pow(abs(M[i-27]),x)+pow(abs(M[i-26]),x)+pow(abs(M[i-25]),x)+pow(abs(M[i-24]),x)+pow(abs(M[i-23]),x)+pow(abs(M[i-22]),x)+pow(abs(M[i-21]),x)+pow(abs(M[i-20]),x)+pow(abs(M[i-19]),x)+pow(abs(M[i-18]),x)+pow(abs(M[i-17]),x)+pow(abs(M[i-16]),x)+pow(abs(M[i-15]),x)+pow(abs(M[i-14]),x)+pow(abs(M[i-13]),x)+pow(abs(M[i-12]),x)+pow(abs(M[i-11]),x)+pow(abs(M[i-10]),x)+pow(abs(M[i-9]),x)+pow(abs(M[i-8]),x)+pow(abs(M[i-7]),x)+pow(abs(M[i-6]),x)+pow(abs(M[i-5]),x)+pow(abs(M[i-4]),x)+pow(abs(M[i-3]),x)+pow(abs(M[i-2]),x)+pow(abs(M[i-1]),x)+pow(abs(M[i]),x))/static_cast<double>(N)); |
s1604554 | 1:e7cf79380e24 | 38 | |
s1604554 | 1:e7cf79380e24 | 39 | // } |
s1604554 | 1:e7cf79380e24 | 40 | |
s1604554 | 1:e7cf79380e24 | 41 | |
s1604554 | 0:eb47e42019a4 | 42 | //Full wave rectifier, moving average, and RMS |
s1604554 | 0:eb47e42019a4 | 43 | |
s1604554 | 1:e7cf79380e24 | 44 | scope.set(0, emgSignal); |
s1604554 | 1:e7cf79380e24 | 45 | scope.set(1, emgFiltered); |
s1604554 | 1:e7cf79380e24 | 46 | scope.send(); |
s1604554 | 1:e7cf79380e24 | 47 | |
s1604554 | 1:e7cf79380e24 | 48 | } |
s1604554 | 1:e7cf79380e24 | 49 | int main() |
s1604554 | 1:e7cf79380e24 | 50 | { |
s1604554 | 1:e7cf79380e24 | 51 | |
s1604554 | 1:e7cf79380e24 | 52 | emgticker.attach(&Sample, 0.002); |
s1604554 | 1:e7cf79380e24 | 53 | while (true) {} |
s1604554 | 1:e7cf79380e24 | 54 | |
s1604554 | 0:eb47e42019a4 | 55 | } |
s1604554 | 1:e7cf79380e24 | 56 | |
s1604554 | 0:eb47e42019a4 | 57 | |
s1604554 | 0:eb47e42019a4 | 58 |