control for robotic arm that can play chess using a granular gripper
Dependencies: Encoder mbed HIDScope Servo MODSERIAL
Fork of chessRobot by
PID/PID.h@130:2542f844ba1e, 2015-10-30 (annotated)
- Committer:
- annesteenbeek
- Date:
- Fri Oct 30 10:32:49 2015 +0100
- Revision:
- 130:2542f844ba1e
- Parent:
- 83:8fa05f53fc73
changes
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
annesteenbeek | 51:1e6334b993a3 | 1 | #ifndef PID_H |
annesteenbeek | 51:1e6334b993a3 | 2 | #define PID_H |
annesteenbeek | 51:1e6334b993a3 | 3 | |
annesteenbeek | 51:1e6334b993a3 | 4 | class PID{ |
annesteenbeek | 51:1e6334b993a3 | 5 | public: |
annesteenbeek | 51:1e6334b993a3 | 6 | #define MANUAL 0 |
annesteenbeek | 51:1e6334b993a3 | 7 | #define AUTOMATIC 1 |
annesteenbeek | 83:8fa05f53fc73 | 8 | #define FORWARD 0 |
annesteenbeek | 81:71e7e98deb2c | 9 | #define REVERSE 1 |
annesteenbeek | 51:1e6334b993a3 | 10 | |
annesteenbeek | 62:6c566e6f9664 | 11 | PID(double*, double*, double*, double, double, double); |
annesteenbeek | 51:1e6334b993a3 | 12 | |
annesteenbeek | 51:1e6334b993a3 | 13 | void SetMode(int Mode); |
annesteenbeek | 51:1e6334b993a3 | 14 | |
annesteenbeek | 51:1e6334b993a3 | 15 | bool Compute(); // returns false when in Manual mode |
annesteenbeek | 51:1e6334b993a3 | 16 | |
annesteenbeek | 62:6c566e6f9664 | 17 | void SetOutputLimits(double, double); |
annesteenbeek | 51:1e6334b993a3 | 18 | |
annesteenbeek | 62:6c566e6f9664 | 19 | void SetSampleTime(double); |
annesteenbeek | 51:1e6334b993a3 | 20 | |
annesteenbeek | 62:6c566e6f9664 | 21 | void SetTunings(double, double, double); |
annesteenbeek | 82:4cc8f9ad3fec | 22 | void SetDirection(int); |
annesteenbeek | 60:20945383ad1b | 23 | |
annesteenbeek | 62:6c566e6f9664 | 24 | double getKp(); |
annesteenbeek | 62:6c566e6f9664 | 25 | double getKi(); |
annesteenbeek | 62:6c566e6f9664 | 26 | double getKd(); |
annesteenbeek | 51:1e6334b993a3 | 27 | |
annesteenbeek | 51:1e6334b993a3 | 28 | private: |
annesteenbeek | 51:1e6334b993a3 | 29 | void Initialize(); |
annesteenbeek | 83:8fa05f53fc73 | 30 | int controllerDirection; |
annesteenbeek | 62:6c566e6f9664 | 31 | double SampleTime; |
annesteenbeek | 62:6c566e6f9664 | 32 | double *myInput; // * Pointers to the Input, Output, and Setpoint variables |
annesteenbeek | 62:6c566e6f9664 | 33 | double *myOutput; // This creates a hard link between the variables and the |
annesteenbeek | 62:6c566e6f9664 | 34 | double *mySetpoint; // PID, freeing the user from having to constantly tell us |
annesteenbeek | 51:1e6334b993a3 | 35 | // what these values are. with pointers we'll just know. |
annesteenbeek | 62:6c566e6f9664 | 36 | double error, ITerm, dErr; |
annesteenbeek | 62:6c566e6f9664 | 37 | double lastErr, lastInput; |
annesteenbeek | 62:6c566e6f9664 | 38 | double kp, ki, kd; |
annesteenbeek | 62:6c566e6f9664 | 39 | double outMin, outMax; |
annesteenbeek | 51:1e6334b993a3 | 40 | bool inAuto; |
annesteenbeek | 51:1e6334b993a3 | 41 | |
annesteenbeek | 51:1e6334b993a3 | 42 | }; |
annesteenbeek | 51:1e6334b993a3 | 43 | |
annesteenbeek | 51:1e6334b993a3 | 44 | #endif |