biorobotics group 19 , 2 november

Fork of SigInterpreterv2 by Fabian van Hummel

Committer:
fabian101
Date:
Wed Nov 02 15:39:01 2016 +0000
Revision:
3:096e6a7bd90b
Parent:
2:ad96602f71c0
biorobotics group 19 , 2 november

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fabian101 1:665ee7703fbe 1 #include "SigInterpreter.h"
fabian101 1:665ee7703fbe 2
fabian101 3:096e6a7bd90b 3 /*
fabian101 3:096e6a7bd90b 4 const double b0_1 = 0.86746769957;
fabian101 3:096e6a7bd90b 5 const double b1_1 = -1.73493539914;
fabian101 3:096e6a7bd90b 6 const double b2_1 = 0.86746769957;
fabian101 3:096e6a7bd90b 7 const double a1_1 = -1.72399696946;
fabian101 3:096e6a7bd90b 8 const double a2_1 = 0.74581276783;
fabian101 3:096e6a7bd90b 9
fabian101 3:096e6a7bd90b 10 const double b0_2 = 0.93721236427;
fabian101 3:096e6a7bd90b 11 const double b1_2 = -1.87442472855;
fabian101 3:096e6a7bd90b 12 const double b2_2 = 0.93721236427;
fabian101 3:096e6a7bd90b 13 const double a1_2 = -1.82350353127;
fabian101 3:096e6a7bd90b 14 const double a2_2 = 0.8862430266;
fabian101 3:096e6a7bd90b 15
fabian101 3:096e6a7bd90b 16 */
fabian101 3:096e6a7bd90b 17 BiQuad bq1_1(-1.72399696946,0.74581276783,0.86746769957,-1.73493539914,0.86746769957);
fabian101 3:096e6a7bd90b 18 BiQuad bq1_2(-1.82350353127,0.8862430266,0.93721236427,-1.87442472855,0.93721236427);
fabian101 3:096e6a7bd90b 19 BiQuad bq1_3( 3.00955e-10, 3.00615e-10, 0.00000e+00, -9.75178e-01, 0.00000e+00 );
fabian101 3:096e6a7bd90b 20 BiQuad bq1_4( 1.00000e+00, 2.00183e+00, 1.00183e+00, -1.95953e+00, 9.60149e-01 );
fabian101 3:096e6a7bd90b 21 BiQuad bq1_5( 1.00000e+00, 1.99930e+00, 9.99302e-01, -1.98396e+00, 9.84588e-01 );
fabian101 3:096e6a7bd90b 22
fabian101 3:096e6a7bd90b 23 BiQuad bq2_1(-1.72399696946,0.74581276783,0.86746769957,-1.73493539914,0.86746769957);
fabian101 3:096e6a7bd90b 24 BiQuad bq2_2(-1.82350353127,0.8862430266,0.93721236427,-1.87442472855,0.93721236427);
fabian101 3:096e6a7bd90b 25 BiQuad bq2_3( 3.00955e-10, 3.00615e-10, 0.00000e+00, -9.75178e-01, 0.00000e+00 );
fabian101 3:096e6a7bd90b 26 BiQuad bq2_4( 1.00000e+00, 2.00183e+00, 1.00183e+00, -1.95953e+00, 9.60149e-01 );
fabian101 3:096e6a7bd90b 27 BiQuad bq2_5( 1.00000e+00, 1.99930e+00, 9.99302e-01, -1.98396e+00, 9.84588e-01 );
fabian101 3:096e6a7bd90b 28
fabian101 3:096e6a7bd90b 29 BiQuad bq3_1(-1.72399696946,0.74581276783,0.86746769957,-1.73493539914,0.86746769957);
fabian101 3:096e6a7bd90b 30 BiQuad bq3_2(-1.82350353127,0.8862430266,0.93721236427,-1.87442472855,0.93721236427);
fabian101 3:096e6a7bd90b 31 BiQuad bq3_3( 3.00955e-10, 3.00615e-10, 0.00000e+00, -9.75178e-01, 0.00000e+00 );
fabian101 3:096e6a7bd90b 32 BiQuad bq3_4( 1.00000e+00, 2.00183e+00, 1.00183e+00, -1.95953e+00, 9.60149e-01 );
fabian101 3:096e6a7bd90b 33 BiQuad bq3_5( 1.00000e+00, 1.99930e+00, 9.99302e-01, -1.98396e+00, 9.84588e-01 );
fabian101 3:096e6a7bd90b 34
fabian101 3:096e6a7bd90b 35 BiQuad bq4_1(-1.72399696946,0.74581276783,0.86746769957,-1.73493539914,0.86746769957);
fabian101 3:096e6a7bd90b 36 BiQuad bq4_2(-1.82350353127,0.8862430266,0.93721236427,-1.87442472855,0.93721236427);
fabian101 3:096e6a7bd90b 37 BiQuad bq4_3( 3.00955e-10, 3.00615e-10, 0.00000e+00, -9.75178e-01, 0.00000e+00 );
fabian101 3:096e6a7bd90b 38 BiQuad bq4_4( 1.00000e+00, 2.00183e+00, 1.00183e+00, -1.95953e+00, 9.60149e-01 );
fabian101 3:096e6a7bd90b 39 BiQuad bq4_5( 1.00000e+00, 1.99930e+00, 9.99302e-01, -1.98396e+00, 9.84588e-01 );
fabian101 3:096e6a7bd90b 40
fabian101 3:096e6a7bd90b 41
fabian101 2:ad96602f71c0 42
fabian101 1:665ee7703fbe 43 AnalogIn emg1(A0);
fabian101 1:665ee7703fbe 44 AnalogIn emg2(A1);
fabian101 1:665ee7703fbe 45 AnalogIn emg3(A2);
fabian101 1:665ee7703fbe 46 AnalogIn emg4(A3);
fabian101 2:ad96602f71c0 47
fabian101 2:ad96602f71c0 48 SigInterpreter::SigInterpreter()
fabian101 2:ad96602f71c0 49 {
fabian101 1:665ee7703fbe 50
fabian101 2:ad96602f71c0 51 }
fabian101 1:665ee7703fbe 52
fabian101 3:096e6a7bd90b 53 float SigInterpreter::readValue(int sig) {
fabian101 1:665ee7703fbe 54 // returns the amplitude of EMG signal
fabian101 2:ad96602f71c0 55 if(sig > 4 || sig < 1)
fabian101 2:ad96602f71c0 56 {
fabian101 1:665ee7703fbe 57 // nope
fabian101 3:096e6a7bd90b 58 return 0.0;
fabian101 2:ad96602f71c0 59 }
fabian101 2:ad96602f71c0 60 if (sig == 1)
fabian101 2:ad96602f71c0 61 {
fabian101 3:096e6a7bd90b 62 return (filter1(emg1.read()));
fabian101 1:665ee7703fbe 63 }
fabian101 2:ad96602f71c0 64 if (sig == 2)
fabian101 2:ad96602f71c0 65 {
fabian101 3:096e6a7bd90b 66 return (filter2(emg2.read()));
fabian101 1:665ee7703fbe 67 }
fabian101 2:ad96602f71c0 68 if (sig == 3)
fabian101 2:ad96602f71c0 69 {
fabian101 3:096e6a7bd90b 70 return (filter3(emg3.read()));
fabian101 1:665ee7703fbe 71 }
fabian101 2:ad96602f71c0 72 if (sig == 4)
fabian101 2:ad96602f71c0 73 {
fabian101 3:096e6a7bd90b 74 return (filter4(emg4.read()));
fabian101 2:ad96602f71c0 75 }
fabian101 2:ad96602f71c0 76 else
fabian101 2:ad96602f71c0 77 {
fabian101 2:ad96602f71c0 78 return 0.0;
fabian101 2:ad96602f71c0 79 }
fabian101 1:665ee7703fbe 80 }
fabian101 2:ad96602f71c0 81
fabian101 3:096e6a7bd90b 82 float SigInterpreter::filter1(float input){
fabian101 2:ad96602f71c0 83
fabian101 3:096e6a7bd90b 84 highpass1 = bq1_1.step(input);
fabian101 3:096e6a7bd90b 85 highpass2 = bq1_2.step(highpass1);
fabian101 3:096e6a7bd90b 86 rect = fabs(highpass2);
fabian101 3:096e6a7bd90b 87 lowpass1 = bq1_3.step(rect);
fabian101 3:096e6a7bd90b 88 lowpass2 = bq1_4.step(lowpass1);
fabian101 3:096e6a7bd90b 89 lowpass3 = bq1_5.step(lowpass2);
fabian101 3:096e6a7bd90b 90
fabian101 3:096e6a7bd90b 91 return lowpass3;
fabian101 3:096e6a7bd90b 92 }
fabian101 2:ad96602f71c0 93
fabian101 3:096e6a7bd90b 94 float SigInterpreter::filter2(float input){
fabian101 3:096e6a7bd90b 95
fabian101 3:096e6a7bd90b 96 highpass1 = bq2_1.step(input);
fabian101 3:096e6a7bd90b 97 highpass2 = bq2_2.step(highpass1);
fabian101 3:096e6a7bd90b 98 rect = fabs(highpass2);
fabian101 3:096e6a7bd90b 99 lowpass1 = bq2_3.step(rect);
fabian101 3:096e6a7bd90b 100 lowpass2 = bq2_4.step(lowpass1);
fabian101 3:096e6a7bd90b 101 lowpass3 = bq2_5.step(lowpass2);
fabian101 2:ad96602f71c0 102
fabian101 3:096e6a7bd90b 103 return lowpass3;
fabian101 2:ad96602f71c0 104 }
fabian101 2:ad96602f71c0 105
fabian101 3:096e6a7bd90b 106 float SigInterpreter::filter3(float input){
fabian101 3:096e6a7bd90b 107
fabian101 3:096e6a7bd90b 108 highpass1 = bq3_1.step(input);
fabian101 3:096e6a7bd90b 109 highpass2 = bq3_2.step(highpass1);
fabian101 3:096e6a7bd90b 110 rect = fabs(highpass2);
fabian101 3:096e6a7bd90b 111 lowpass1 = bq3_3.step(rect);
fabian101 3:096e6a7bd90b 112 lowpass2 = bq3_4.step(lowpass1);
fabian101 3:096e6a7bd90b 113 lowpass3 = bq3_5.step(lowpass2);
fabian101 3:096e6a7bd90b 114
fabian101 3:096e6a7bd90b 115 return lowpass3;
fabian101 3:096e6a7bd90b 116 }
fabian101 3:096e6a7bd90b 117
fabian101 3:096e6a7bd90b 118 float SigInterpreter::filter4(float input){
fabian101 3:096e6a7bd90b 119
fabian101 3:096e6a7bd90b 120 highpass1 = bq4_1.step(input);
fabian101 3:096e6a7bd90b 121 highpass2 = bq4_2.step(highpass1);
fabian101 3:096e6a7bd90b 122 rect = fabs(highpass2);
fabian101 3:096e6a7bd90b 123 lowpass1 = bq4_3.step(rect);
fabian101 3:096e6a7bd90b 124 lowpass2 = bq4_4.step(lowpass1);
fabian101 3:096e6a7bd90b 125 lowpass3 = bq4_5.step(lowpass2);
fabian101 3:096e6a7bd90b 126
fabian101 3:096e6a7bd90b 127 return lowpass3;
fabian101 3:096e6a7bd90b 128 }
fabian101 3:096e6a7bd90b 129
fabian101 3:096e6a7bd90b 130