Biorobotics
/
piano_robot
newest version,
Diff: read_filter_emg.h
- Revision:
- 0:fc6fa085d591
- Child:
- 1:5c1fc4e9401a
diff -r 000000000000 -r fc6fa085d591 read_filter_emg.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/read_filter_emg.h Fri Oct 23 13:14:57 2015 +0000 @@ -0,0 +1,42 @@ +/* + * read_filter_emg.h + * + * Created on: Oct 14, 2015 + * Author: User + */ + +#ifndef READ_FILTER_EMG_H_ +#define READ_FILTER_EMG_H_ + +class EMG { + public: + //create instance of the EMG class + EMG(PinName aI_, double &v1_, double &v2_); + double v1; + double v2; + double input_sample; + double filtered_sample; + + //reads emg value and saves as input_sample + void sample(); + + /*general biquad function to be used in the filtering + biquad coefficients are in the filter functions */ + double biquad(double u, double &v1, double &v2, const double a1, + const double a2, const double b0, const double b1, const double b2); + + //20 hz highpass filter contains 3 biquads. Returns filtered value + double highpass_filter(double hpInput); + + //Rectify the input (take absolute value). Input is output of highpass + double rectify(double rcInput); + + //6 hz low pass filter, contains 3 biquads, input output of rectify + double lowpass_filter(double lpInput); + + //function containing all three filter steps. Input raw signal value, output is filtered envelope value + double filter(double input); +}; + +#endif /* READ_FILTER_EMG_H_ */ +