control for robotic arm that can play chess using a granular gripper

Dependencies:   Encoder mbed HIDScope Servo MODSERIAL

Fork of chessRobot by a steenbeek

Committer:
annesteenbeek
Date:
Fri Oct 30 10:32:49 2015 +0100
Revision:
130:2542f844ba1e
Parent:
83:8fa05f53fc73
changes

Who changed what in which revision?

UserRevisionLine numberNew 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