Buggy bois / Mbed 2 deprecated WORKING_TRIAL

Dependencies:   mbed

Committer:
mazdo25
Date:
Sun Mar 03 00:54:07 2019 +0000
Revision:
1:813f4b17ae65
Child:
3:01b5e80d842d
Buggy project

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mazdo25 1:813f4b17ae65 1 //CURRENTLY EMPTY BUT I MAY JUST MAKE A NEW CLASS FOR THE P CONTROL
mazdo25 1:813f4b17ae65 2 class P
mazdo25 1:813f4b17ae65 3 {
mazdo25 1:813f4b17ae65 4 private:
mazdo25 1:813f4b17ae65 5 float inMin;
mazdo25 1:813f4b17ae65 6 float inMax;
mazdo25 1:813f4b17ae65 7 float control;
mazdo25 1:813f4b17ae65 8
mazdo25 1:813f4b17ae65 9 float outMin;
mazdo25 1:813f4b17ae65 10 float outMax;
mazdo25 1:813f4b17ae65 11
mazdo25 1:813f4b17ae65 12 float gain;
mazdo25 1:813f4b17ae65 13
mazdo25 1:813f4b17ae65 14
mazdo25 1:813f4b17ae65 15 public:
mazdo25 1:813f4b17ae65 16 P(float G)
mazdo25 1:813f4b17ae65 17 {
mazdo25 1:813f4b17ae65 18 gain = G;
mazdo25 1:813f4b17ae65 19 inMin = 0.0f;
mazdo25 1:813f4b17ae65 20 inMax = 3.3f;
mazdo25 1:813f4b17ae65 21 outMin = 0.0f;
mazdo25 1:813f4b17ae65 22 outMax = 1.0f;
mazdo25 1:813f4b17ae65 23 control = 0;
mazdo25 1:813f4b17ae65 24 }
mazdo25 1:813f4b17ae65 25
mazdo25 1:813f4b17ae65 26 void setInputLimits(float inMin_, float inMax_)
mazdo25 1:813f4b17ae65 27 {
mazdo25 1:813f4b17ae65 28 if (inMin_ > inMax_) {return;} //cant be true can it
mazdo25 1:813f4b17ae65 29 inMin = inMin_;
mazdo25 1:813f4b17ae65 30 inMax = inMax_;
mazdo25 1:813f4b17ae65 31 }
mazdo25 1:813f4b17ae65 32
mazdo25 1:813f4b17ae65 33 void setOutputLimits(float outMin_, float outMax_)
mazdo25 1:813f4b17ae65 34 {
mazdo25 1:813f4b17ae65 35 if (outMin_ > outMax_) {return;}
mazdo25 1:813f4b17ae65 36 outMin = outMin_;
mazdo25 1:813f4b17ae65 37 outMax = outMax_;
mazdo25 1:813f4b17ae65 38 }
mazdo25 1:813f4b17ae65 39
mazdo25 1:813f4b17ae65 40 float compute(float curVal_)
mazdo25 1:813f4b17ae65 41 {
mazdo25 1:813f4b17ae65 42 float temp = ((control-curVal_)*gain)+curVal_; //amplify difference by gain and add to current value
mazdo25 1:813f4b17ae65 43 temp = (((temp-inMin)/(inMin - inMin))*(outMax-outMin))+outMin; //scales temp to the correct output Limits
mazdo25 1:813f4b17ae65 44 return temp; //return the scaled value
mazdo25 1:813f4b17ae65 45 }
mazdo25 1:813f4b17ae65 46
mazdo25 1:813f4b17ae65 47 void setControl(float wantedVal_)
mazdo25 1:813f4b17ae65 48 {
mazdo25 1:813f4b17ae65 49 if (wantedVal_ > inMax) {control = inMax;}
mazdo25 1:813f4b17ae65 50 else if (wantedVal_ <inMin) {control = inMin;}
mazdo25 1:813f4b17ae65 51 else {control = wantedVal_;}
mazdo25 1:813f4b17ae65 52 }
mazdo25 1:813f4b17ae65 53
mazdo25 1:813f4b17ae65 54 float returnControl(void)
mazdo25 1:813f4b17ae65 55 {
mazdo25 1:813f4b17ae65 56 return control;
mazdo25 1:813f4b17ae65 57 }
mazdo25 1:813f4b17ae65 58
mazdo25 1:813f4b17ae65 59 };