Generates reference based on analog input

Dependents:   locomotion_pid_action_refactor_EMG

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?

UserRevisionLine numberNew 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 }