Generates reference based on analog input
Dependents: locomotion_pid_action_refactor_EMG
refGen.cpp@4:38af2aa14a3f, 2017-10-22 (annotated)
- Committer:
- tvlogman
- Date:
- Sun Oct 22 08:01:03 2017 +0000
- Revision:
- 4:38af2aa14a3f
- Parent:
- 3:43d9f8db93b7
- Child:
- 5:7186da6f562f
Added functionality to filter reference using a biquadChain.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tvlogman | 0:5c67195a412d | 1 | #include "refGen.h" |
tvlogman | 0:5c67195a412d | 2 | #include "mbed.h" |
tvlogman | 4:38af2aa14a3f | 3 | #include "biquadChain.h" |
tvlogman | 0:5c67195a412d | 4 | |
tvlogman | 0:5c67195a412d | 5 | // Member function definitions |
tvlogman | 2:35c05e7698f5 | 6 | refGen::refGen(PinName a, float maxAngle):refPin(a), maxAngle(maxAngle), r_direction(false){ |
tvlogman | 0:5c67195a412d | 7 | |
tvlogman | 0:5c67195a412d | 8 | } |
tvlogman | 0:5c67195a412d | 9 | |
tvlogman | 4:38af2aa14a3f | 10 | float refGen :: getReference(){ |
tvlogman | 0:5c67195a412d | 11 | float r; |
tvlogman | 0:5c67195a412d | 12 | if(r_direction == false){ |
tvlogman | 0:5c67195a412d | 13 | // Clockwise rotation yields positive reference |
tvlogman | 3:43d9f8db93b7 | 14 | r = maxAngle*refPin.read(); |
tvlogman | 0:5c67195a412d | 15 | } |
tvlogman | 0:5c67195a412d | 16 | if(r_direction == true){ |
tvlogman | 0:5c67195a412d | 17 | // Counterclockwise rotation yields negative reference |
tvlogman | 0:5c67195a412d | 18 | r = -1*maxAngle*refPin.read(); |
tvlogman | 0:5c67195a412d | 19 | } |
tvlogman | 0:5c67195a412d | 20 | return r; |
tvlogman | 4:38af2aa14a3f | 21 | } |
tvlogman | 4:38af2aa14a3f | 22 | |
tvlogman | 4:38af2aa14a3f | 23 | float refGen :: getFilteredReference(biquadChain BQC){ |
tvlogman | 4:38af2aa14a3f | 24 | float r; |
tvlogman | 4:38af2aa14a3f | 25 | if(r_direction == false){ |
tvlogman | 4:38af2aa14a3f | 26 | // Clockwise rotation yields positive reference |
tvlogman | 4:38af2aa14a3f | 27 | r = maxAngle*refPin.read(); |
tvlogman | 4:38af2aa14a3f | 28 | r = BQC.applyFilter(r); |
tvlogman | 4:38af2aa14a3f | 29 | } |
tvlogman | 4:38af2aa14a3f | 30 | if(r_direction == true){ |
tvlogman | 4:38af2aa14a3f | 31 | // Counterclockwise rotation yields negative reference |
tvlogman | 4:38af2aa14a3f | 32 | r = -1*maxAngle*refPin.read(); |
tvlogman | 4:38af2aa14a3f | 33 | r = BQC.applyFilter(r); |
tvlogman | 4:38af2aa14a3f | 34 | } |
tvlogman | 4:38af2aa14a3f | 35 | return r; |
tvlogman | 0:5c67195a412d | 36 | } |