FSG / Controller_

Dependents:   7_20_17_FSG_ 7_21_17_FSG 7_26_17_FSG

Fork of Controller by Melissa Davis

Committer:
tzyoung
Date:
Thu Apr 27 13:16:33 2017 +0000
Revision:
0:2566234da01a
Child:
6:29cf76bb9956
initial release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tzyoung 0:2566234da01a 1 #ifndef MBED_DEPTHCONTROLLER_H
tzyoung 0:2566234da01a 2 #define MBED_DEPTHCONTROLLER_H
tzyoung 0:2566234da01a 3
tzyoung 0:2566234da01a 4 #include "mbed.h"
tzyoung 0:2566234da01a 5
tzyoung 0:2566234da01a 6 class PositionController
tzyoung 0:2566234da01a 7 {
tzyoung 0:2566234da01a 8 public:
tzyoung 0:2566234da01a 9 PositionController();
tzyoung 0:2566234da01a 10
tzyoung 0:2566234da01a 11 void update(float position, float velocity, float dt);
tzyoung 0:2566234da01a 12
tzyoung 0:2566234da01a 13 float getOutput();
tzyoung 0:2566234da01a 14
tzyoung 0:2566234da01a 15 void setPgain(float gain);
tzyoung 0:2566234da01a 16 void setIgain(float gain);
tzyoung 0:2566234da01a 17 void setDgain(float gain);
tzyoung 0:2566234da01a 18
tzyoung 0:2566234da01a 19 void writeSetPoint(float cmd);
tzyoung 0:2566234da01a 20
tzyoung 0:2566234da01a 21 // void setConfigFlag();
tzyoung 0:2566234da01a 22
tzyoung 0:2566234da01a 23 protected:
tzyoung 0:2566234da01a 24 float _setPoint;
tzyoung 0:2566234da01a 25 float _Pgain;
tzyoung 0:2566234da01a 26 float _Dgain;
tzyoung 0:2566234da01a 27 float _Igain;
tzyoung 0:2566234da01a 28
tzyoung 0:2566234da01a 29 float _error;
tzyoung 0:2566234da01a 30
tzyoung 0:2566234da01a 31 float _integral;
tzyoung 0:2566234da01a 32 float _lastTime;
tzyoung 0:2566234da01a 33 float _dt;
tzyoung 0:2566234da01a 34
tzyoung 0:2566234da01a 35
tzyoung 0:2566234da01a 36 float _output;
tzyoung 0:2566234da01a 37
tzyoung 0:2566234da01a 38 // bool configFlag;
tzyoung 0:2566234da01a 39 // int readConfiguration();
tzyoung 0:2566234da01a 40
tzyoung 0:2566234da01a 41 };
tzyoung 0:2566234da01a 42
tzyoung 0:2566234da01a 43 template <typename T>
tzyoung 0:2566234da01a 44 T clamp(T value, T min, T max)
tzyoung 0:2566234da01a 45 {
tzyoung 0:2566234da01a 46 if(value < min) {
tzyoung 0:2566234da01a 47 return min;
tzyoung 0:2566234da01a 48 } else if(value > max) {
tzyoung 0:2566234da01a 49 return max;
tzyoung 0:2566234da01a 50 } else {
tzyoung 0:2566234da01a 51 return value;
tzyoung 0:2566234da01a 52 }
tzyoung 0:2566234da01a 53 };
tzyoung 0:2566234da01a 54
tzyoung 0:2566234da01a 55 #endif