Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
WheelControl/P.h@3:01b5e80d842d, 2019-03-09 (annotated)
- Committer:
- mazdo25
- Date:
- Sat Mar 09 14:27:48 2019 +0000
- Revision:
- 3:01b5e80d842d
- Parent:
- 1:813f4b17ae65
Initialization working, sensors not
Who changed what in which revision?
| User | Revision | Line number | New 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 | 3:01b5e80d842d | 43 | temp = (((temp-inMin)/(inMax - inMin))*(outMax-outMin))+outMin; //scales temp to the correct output Limits |
| mazdo25 | 3:01b5e80d842d | 44 | if (temp > 1.0f ) {temp = 1.0f;} |
| mazdo25 | 3:01b5e80d842d | 45 | if (temp < -1.0f) {temp = -1.0f;} |
| mazdo25 | 1:813f4b17ae65 | 46 | return temp; //return the scaled value |
| mazdo25 | 1:813f4b17ae65 | 47 | } |
| mazdo25 | 1:813f4b17ae65 | 48 | |
| mazdo25 | 1:813f4b17ae65 | 49 | void setControl(float wantedVal_) |
| mazdo25 | 1:813f4b17ae65 | 50 | { |
| mazdo25 | 1:813f4b17ae65 | 51 | if (wantedVal_ > inMax) {control = inMax;} |
| mazdo25 | 1:813f4b17ae65 | 52 | else if (wantedVal_ <inMin) {control = inMin;} |
| mazdo25 | 1:813f4b17ae65 | 53 | else {control = wantedVal_;} |
| mazdo25 | 1:813f4b17ae65 | 54 | } |
| mazdo25 | 1:813f4b17ae65 | 55 | |
| mazdo25 | 1:813f4b17ae65 | 56 | float returnControl(void) |
| mazdo25 | 1:813f4b17ae65 | 57 | { |
| mazdo25 | 1:813f4b17ae65 | 58 | return control; |
| mazdo25 | 1:813f4b17ae65 | 59 | } |
| mazdo25 | 1:813f4b17ae65 | 60 | |
| mazdo25 | 1:813f4b17ae65 | 61 | }; |