Biorobotics
/
piano_robot
newest version,
read_filter_emg.h@0:fc6fa085d591, 2015-10-23 (annotated)
- Committer:
- NickDGreg
- Date:
- Fri Oct 23 13:14:57 2015 +0000
- Revision:
- 0:fc6fa085d591
- Child:
- 1:5c1fc4e9401a
move_motor compiles, working on filter. Cannot pass AnalogIn as input, says no default constructor. Cannot pass as pinName as analogIn declared in constructor cannot be seen by methods; ;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
NickDGreg | 0:fc6fa085d591 | 1 | /* |
NickDGreg | 0:fc6fa085d591 | 2 | * read_filter_emg.h |
NickDGreg | 0:fc6fa085d591 | 3 | * |
NickDGreg | 0:fc6fa085d591 | 4 | * Created on: Oct 14, 2015 |
NickDGreg | 0:fc6fa085d591 | 5 | * Author: User |
NickDGreg | 0:fc6fa085d591 | 6 | */ |
NickDGreg | 0:fc6fa085d591 | 7 | |
NickDGreg | 0:fc6fa085d591 | 8 | #ifndef READ_FILTER_EMG_H_ |
NickDGreg | 0:fc6fa085d591 | 9 | #define READ_FILTER_EMG_H_ |
NickDGreg | 0:fc6fa085d591 | 10 | |
NickDGreg | 0:fc6fa085d591 | 11 | class EMG { |
NickDGreg | 0:fc6fa085d591 | 12 | public: |
NickDGreg | 0:fc6fa085d591 | 13 | //create instance of the EMG class |
NickDGreg | 0:fc6fa085d591 | 14 | EMG(PinName aI_, double &v1_, double &v2_); |
NickDGreg | 0:fc6fa085d591 | 15 | double v1; |
NickDGreg | 0:fc6fa085d591 | 16 | double v2; |
NickDGreg | 0:fc6fa085d591 | 17 | double input_sample; |
NickDGreg | 0:fc6fa085d591 | 18 | double filtered_sample; |
NickDGreg | 0:fc6fa085d591 | 19 | |
NickDGreg | 0:fc6fa085d591 | 20 | //reads emg value and saves as input_sample |
NickDGreg | 0:fc6fa085d591 | 21 | void sample(); |
NickDGreg | 0:fc6fa085d591 | 22 | |
NickDGreg | 0:fc6fa085d591 | 23 | /*general biquad function to be used in the filtering |
NickDGreg | 0:fc6fa085d591 | 24 | biquad coefficients are in the filter functions */ |
NickDGreg | 0:fc6fa085d591 | 25 | double biquad(double u, double &v1, double &v2, const double a1, |
NickDGreg | 0:fc6fa085d591 | 26 | const double a2, const double b0, const double b1, const double b2); |
NickDGreg | 0:fc6fa085d591 | 27 | |
NickDGreg | 0:fc6fa085d591 | 28 | //20 hz highpass filter contains 3 biquads. Returns filtered value |
NickDGreg | 0:fc6fa085d591 | 29 | double highpass_filter(double hpInput); |
NickDGreg | 0:fc6fa085d591 | 30 | |
NickDGreg | 0:fc6fa085d591 | 31 | //Rectify the input (take absolute value). Input is output of highpass |
NickDGreg | 0:fc6fa085d591 | 32 | double rectify(double rcInput); |
NickDGreg | 0:fc6fa085d591 | 33 | |
NickDGreg | 0:fc6fa085d591 | 34 | //6 hz low pass filter, contains 3 biquads, input output of rectify |
NickDGreg | 0:fc6fa085d591 | 35 | double lowpass_filter(double lpInput); |
NickDGreg | 0:fc6fa085d591 | 36 | |
NickDGreg | 0:fc6fa085d591 | 37 | //function containing all three filter steps. Input raw signal value, output is filtered envelope value |
NickDGreg | 0:fc6fa085d591 | 38 | double filter(double input); |
NickDGreg | 0:fc6fa085d591 | 39 | }; |
NickDGreg | 0:fc6fa085d591 | 40 | |
NickDGreg | 0:fc6fa085d591 | 41 | #endif /* READ_FILTER_EMG_H_ */ |
NickDGreg | 0:fc6fa085d591 | 42 |