filters aangepast en bepaling threshold
Dependencies: HIDScope MODSERIAL biquadFilter mbed
Fork of EMGV3 by
main.cpp
- Committer:
- Margreeth95
- Date:
- 2015-10-06
- Revision:
- 18:12250e88037f
- Parent:
- 16:9f7797ffd0fb
- Child:
- 19:34456a1effc4
File content as of revision 18:12250e88037f:
#include "mbed.h" #include "HIDScope.h" //Define objects AnalogIn EMG_left(A0); //Analog input AnalogIn EMG_right(A1); Ticker SampleEMG; Ticker ScopeTimer; HIDScope scope(1); // constant values double EMG_L_f_v1 = 0, EMG_L_f_v2 = 0; // coëfficiënten const double BiGainEMG_Lh = 1, BiGainEMG_Ll=1; const double EMG_L_fh_a1 = -0.96608908283*BiGainEMG_Lh, EMG_L_fh_a2 = 0.0*BiGainEMG_Lh, EMG_L_fh_b0 = 1.0*BiGainEMG_Lh, EMG_L_fh_b1 = 1.0*BiGainEMG_Lh, EMG_L_fh_b2 = 0.0*BiGainEMG_Lh; //coefficients for high-pass filter const double EMG_L_fl_a1 = -0.96608908283*BiGainEMG_Ll, EMG_L_fl_a2 = 0.0*BiGainEMG_Ll, EMG_L_fl_b0 = 1.0*BiGainEMG_Ll, EMG_L_fl_b1 = 1.0*BiGainEMG_Ll, EMG_L_fl_b2 = 0.0*BiGainEMG_Ll; // coefficients for low-pass filter // HIDScope void ScopeSend() { scope.set(0, EMG_left.read()); scope.send(); } // Biquad filter double biquad( double u, double &v1, double &v2, const double a1, const double a2, const double b0, const double b1, const double b2 ) { double v = u - a1*v1 - a2*v2; double y = b0*v + b1*v1 + b2*v2; v2 = v1; v1 = v; return y; } // EMG filtering function void EMGfilter() { double EMG_left_value = EMG_left.read(); double EMG_L_fh = biquad(EMG_left_value, EMG_L_f_v1, EMG_L_f_v2, EMG_L_fh_a1, EMG_L_fh_a2, EMG_L_fh_b0, EMG_L_fh_b1, EMG_L_fh_b2); double EMG_L_fhl = biquad(EMG_L_fh, EMG_L_f_v1, EMG_L_f_v2, EMG_L_fl_a1, EMG_L_fl_a2, EMG_L_fl_b0, EMG_L_fl_b1, EMG_L_fl_b2); } int main() { SampleEMG.attach(&EMGfilter, 0.002); ScopeTimer.attach(&ScopeSend, 0.002); while(1) {} }