Buggy bois / Mbed 2 deprecated WORKING_TRIAL

Dependencies:   mbed

Committer:
mazdo25
Date:
Sat Mar 23 19:46:09 2019 +0000
Revision:
4:208f5279143a
latest working, but line following not;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mazdo25 4:208f5279143a 1
mazdo25 4:208f5279143a 2 class P
mazdo25 4:208f5279143a 3 {
mazdo25 4:208f5279143a 4 private:
mazdo25 4:208f5279143a 5 float inMin;
mazdo25 4:208f5279143a 6 float inMax;
mazdo25 4:208f5279143a 7
mazdo25 4:208f5279143a 8 float control;
mazdo25 4:208f5279143a 9
mazdo25 4:208f5279143a 10 float outMin;
mazdo25 4:208f5279143a 11 float outMax;
mazdo25 4:208f5279143a 12
mazdo25 4:208f5279143a 13 float gain;
mazdo25 4:208f5279143a 14 float prevCA;
mazdo25 4:208f5279143a 15 float controlAction;
mazdo25 4:208f5279143a 16
mazdo25 4:208f5279143a 17 public:
mazdo25 4:208f5279143a 18 P(float G)
mazdo25 4:208f5279143a 19 {
mazdo25 4:208f5279143a 20 gain = G;
mazdo25 4:208f5279143a 21 outMin = 0.0f;
mazdo25 4:208f5279143a 22 outMax = 1.0f;
mazdo25 4:208f5279143a 23 control = 0;
mazdo25 4:208f5279143a 24 }
mazdo25 4:208f5279143a 25
mazdo25 4:208f5279143a 26 void setInputLimits(int inMin_, int inMax_)
mazdo25 4:208f5279143a 27 {
mazdo25 4:208f5279143a 28 if (inMin_ > inMax_) {return;} //cant be true can it
mazdo25 4:208f5279143a 29 inMin = inMin_;
mazdo25 4:208f5279143a 30 inMax = inMax_;
mazdo25 4:208f5279143a 31 }
mazdo25 4:208f5279143a 32
mazdo25 4:208f5279143a 33 void setInMax(float inMax_)
mazdo25 4:208f5279143a 34 {
mazdo25 4:208f5279143a 35 inMax = inMax_;
mazdo25 4:208f5279143a 36 }
mazdo25 4:208f5279143a 37
mazdo25 4:208f5279143a 38 float returnPrevCA()
mazdo25 4:208f5279143a 39 {
mazdo25 4:208f5279143a 40 return prevCA;
mazdo25 4:208f5279143a 41 }
mazdo25 4:208f5279143a 42
mazdo25 4:208f5279143a 43 void setOutputLimits(float outMin_, float outMax_)
mazdo25 4:208f5279143a 44 {
mazdo25 4:208f5279143a 45 if (outMin_ > outMax_) {return;}
mazdo25 4:208f5279143a 46 outMin = outMin_;
mazdo25 4:208f5279143a 47 outMax = outMax_;
mazdo25 4:208f5279143a 48 }
mazdo25 4:208f5279143a 49
mazdo25 4:208f5279143a 50 float compute(float curVal_)
mazdo25 4:208f5279143a 51 {
mazdo25 4:208f5279143a 52 //if the measured value is greater than the measured amount, then clearly the limits are offfffffffffffffff
mazdo25 4:208f5279143a 53 if (curVal_ > inMax) {inMax=curVal_;}
mazdo25 4:208f5279143a 54 if (curVal_ < inMin) {inMin=curVal_;}
mazdo25 4:208f5279143a 55 controlAction = ((control-curVal_)*gain); //amplify the error by the gain
mazdo25 4:208f5279143a 56 if (controlAction > inMax ) {controlAction = inMax;}
mazdo25 4:208f5279143a 57 if (controlAction < inMin) {controlAction = inMin;}
mazdo25 4:208f5279143a 58 float prevCATemp = prevCA;
mazdo25 4:208f5279143a 59 prevCA = controlAction;
mazdo25 4:208f5279143a 60 controlAction += prevCATemp;
mazdo25 4:208f5279143a 61 return (((controlAction-inMin)/(inMax - inMin))*(outMax-outMin))+outMin; //scales temp to the correct output Limits
mazdo25 4:208f5279143a 62 }
mazdo25 4:208f5279143a 63
mazdo25 4:208f5279143a 64 void setControl(float wantedVal_)
mazdo25 4:208f5279143a 65 {
mazdo25 4:208f5279143a 66 if (wantedVal_ > inMax) {control = inMax;}
mazdo25 4:208f5279143a 67 else if (wantedVal_ < inMin) {control = inMin;}
mazdo25 4:208f5279143a 68 else {control = wantedVal_;}
mazdo25 4:208f5279143a 69 }
mazdo25 4:208f5279143a 70
mazdo25 4:208f5279143a 71 float returnControl(void)
mazdo25 4:208f5279143a 72 {
mazdo25 4:208f5279143a 73 return control;
mazdo25 4:208f5279143a 74 }
mazdo25 4:208f5279143a 75
mazdo25 4:208f5279143a 76 float returnInMax()
mazdo25 4:208f5279143a 77 {
mazdo25 4:208f5279143a 78 return inMax;
mazdo25 4:208f5279143a 79 }
mazdo25 4:208f5279143a 80
mazdo25 4:208f5279143a 81 };