first test of done filter

Dependencies:   biquadFilter mbed HIDScope

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?

UserRevisionLine numberNew 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