filtering the signal needs tweaking but timing works,

Fork of SigInterpreter by Fabian van Hummel

Committer:
fabian101
Date:
Fri Oct 28 12:48:27 2016 +0000
Revision:
2:ad96602f71c0
Parent:
1:665ee7703fbe
28-10 friday, filtering is implemented but needs tweaking;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fabian101 1:665ee7703fbe 1 #include "SigInterpreter.h"
fabian101 1:665ee7703fbe 2
fabian101 2:ad96602f71c0 3 BiQuadChain bqc;
fabian101 2:ad96602f71c0 4 BiQuad bq1(a1_1,a2_1,b0_1,b1_1,b2_1);
fabian101 2:ad96602f71c0 5 BiQuad bq2(a1_2,a2_2,b0_2,b1_2,b2_2);
fabian101 2:ad96602f71c0 6 BiQuad bq3(a1_3,a2_3,b0_3,b1_3,b2_3);
fabian101 2:ad96602f71c0 7 BiQuad bq4(a1_4,a2_4,b0_4,b1_4,b2_4);
fabian101 2:ad96602f71c0 8 BiQuad bq5(a1_5,a2_5,b0_5,b1_5,b2_5);
fabian101 2:ad96602f71c0 9
fabian101 1:665ee7703fbe 10 AnalogIn emg1(A0);
fabian101 1:665ee7703fbe 11 AnalogIn emg2(A1);
fabian101 1:665ee7703fbe 12 AnalogIn emg3(A2);
fabian101 1:665ee7703fbe 13 AnalogIn emg4(A3);
fabian101 2:ad96602f71c0 14
fabian101 2:ad96602f71c0 15 SigInterpreter::SigInterpreter()
fabian101 2:ad96602f71c0 16 {
fabian101 1:665ee7703fbe 17
fabian101 2:ad96602f71c0 18 }
fabian101 1:665ee7703fbe 19
fabian101 1:665ee7703fbe 20 double SigInterpreter::readValue(int sig) {
fabian101 1:665ee7703fbe 21 // returns the amplitude of EMG signal
fabian101 2:ad96602f71c0 22 if(sig > 4 || sig < 1)
fabian101 2:ad96602f71c0 23 {
fabian101 1:665ee7703fbe 24 // nope
fabian101 1:665ee7703fbe 25 return 0.0; // check later of dit idd goeie shit is
fabian101 2:ad96602f71c0 26 }
fabian101 2:ad96602f71c0 27 if (sig == 1)
fabian101 2:ad96602f71c0 28 {
fabian101 1:665ee7703fbe 29 float input = emg1.read();
fabian101 2:ad96602f71c0 30 return (filter(input));
fabian101 1:665ee7703fbe 31 }
fabian101 2:ad96602f71c0 32 if (sig == 2)
fabian101 2:ad96602f71c0 33 {
fabian101 1:665ee7703fbe 34 float input = emg2.read();
fabian101 2:ad96602f71c0 35 return (filter(input));
fabian101 1:665ee7703fbe 36 }
fabian101 2:ad96602f71c0 37 if (sig == 3)
fabian101 2:ad96602f71c0 38 {
fabian101 1:665ee7703fbe 39 float input = emg3.read();
fabian101 2:ad96602f71c0 40 return (filter(input));
fabian101 1:665ee7703fbe 41 }
fabian101 2:ad96602f71c0 42 if (sig == 4)
fabian101 2:ad96602f71c0 43 {
fabian101 1:665ee7703fbe 44 float input = emg4.read();
fabian101 2:ad96602f71c0 45 return (filter(input));
fabian101 2:ad96602f71c0 46 }
fabian101 2:ad96602f71c0 47 else
fabian101 2:ad96602f71c0 48 {
fabian101 2:ad96602f71c0 49 return 0.0;
fabian101 2:ad96602f71c0 50 }
fabian101 1:665ee7703fbe 51 }
fabian101 2:ad96602f71c0 52
fabian101 2:ad96602f71c0 53 double SigInterpreter::filter(float input){
fabian101 2:ad96602f71c0 54
fabian101 2:ad96602f71c0 55 float highpass1 = bq1.step(input);
fabian101 2:ad96602f71c0 56
fabian101 2:ad96602f71c0 57 float highpass2 = bq2.step(highpass1);
fabian101 2:ad96602f71c0 58 /*
fabian101 2:ad96602f71c0 59 float lowpass1 = bq3.step(highpass2);
fabian101 2:ad96602f71c0 60
fabian101 2:ad96602f71c0 61 float lowpass2 = bq4.step(lowpass1);
fabian101 2:ad96602f71c0 62
fabian101 2:ad96602f71c0 63 float lowpass3 = bq5.step(lowpass2);
fabian101 2:ad96602f71c0 64 */
fabian101 2:ad96602f71c0 65
fabian101 2:ad96602f71c0 66 return fabs(input);
fabian101 2:ad96602f71c0 67 }
fabian101 2:ad96602f71c0 68