first test of done filter

Dependencies:   biquadFilter mbed HIDScope

Committer:
carlmaykel
Date:
Fri Oct 21 09:47:43 2016 +0000
Revision:
2:812bb0deedef
Parent:
1:e7cf79380e24
Child:
4:81f889cd0c2e
Changed the ticker frequency. now the HIDscope recognizes the device.

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);
carlmaykel 2:812bb0deedef 10 AnalogIn emg1(A1);
carlmaykel 2:812bb0deedef 11 DigitalOut led1(LED1);
s1604554 1:e7cf79380e24 12 //
carlmaykel 2:812bb0deedef 13 HIDScope scope( 2 );
s1604554 1:e7cf79380e24 14 Ticker emgticker;
s1604554 1:e7cf79380e24 15
s1604554 1:e7cf79380e24 16
s1604554 0:eb47e42019a4 17
s1604554 0:eb47e42019a4 18 BiQuadChain bqc;
s1604554 0:eb47e42019a4 19 BiQuad bq1( 9.84534e-01, -1.59301e+00, 9.84534e-01, -1.59301e+00, 9.69067e-01 );
s1604554 1:e7cf79380e24 20 BiQuad bq2( 9.82385e-01, -1.96477e+00, 9.82385e-01, -1.96446e+00, 9.65081e-01 );
s1604554 1:e7cf79380e24 21 BiQuad bq3( 1.34871e-03, 2.69742e-03, 1.34871e-03, -1.89346e+00, 8.98859e-01 );
s1604554 1:e7cf79380e24 22
s1604554 0:eb47e42019a4 23
s1604554 1:e7cf79380e24 24 void Sample ()
s1604554 1:e7cf79380e24 25 {
s1604554 1:e7cf79380e24 26
s1604554 1:e7cf79380e24 27 double emgSignal = emg0.read();
s1604554 0:eb47e42019a4 28 bqc.add( &bq1 ).add( &bq2 ).add( &bq3 );
s1604554 1:e7cf79380e24 29
s1604554 1:e7cf79380e24 30 double emgFiltered = bqc.step(emgSignal);
s1604554 0:eb47e42019a4 31
s1604554 0:eb47e42019a4 32
s1604554 1:e7cf79380e24 33 //int N = 50;
s1604554 1:e7cf79380e24 34 //double x = 2;
s1604554 1:e7cf79380e24 35 //double average;
s1604554 0:eb47e42019a4 36
s1604554 1:e7cf79380e24 37 //for (int i = N;i<=10000;i++)
s1604554 1:e7cf79380e24 38 //{
s1604554 1:e7cf79380e24 39 // 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 40
s1604554 1:e7cf79380e24 41 // }
s1604554 1:e7cf79380e24 42
s1604554 1:e7cf79380e24 43
s1604554 0:eb47e42019a4 44 //Full wave rectifier, moving average, and RMS
s1604554 0:eb47e42019a4 45
s1604554 1:e7cf79380e24 46 scope.set(0, emgSignal);
s1604554 1:e7cf79380e24 47 scope.set(1, emgFiltered);
s1604554 1:e7cf79380e24 48 scope.send();
carlmaykel 2:812bb0deedef 49 led1 = !led1;
s1604554 1:e7cf79380e24 50 }
s1604554 1:e7cf79380e24 51 int main()
s1604554 1:e7cf79380e24 52 {
s1604554 1:e7cf79380e24 53
carlmaykel 2:812bb0deedef 54 emgticker.attach(&Sample, 0.1);
s1604554 1:e7cf79380e24 55 while (true) {}
s1604554 1:e7cf79380e24 56
s1604554 0:eb47e42019a4 57 }
s1604554 1:e7cf79380e24 58
s1604554 0:eb47e42019a4 59
s1604554 0:eb47e42019a4 60