This is your starting point: https://github.com/Ardumower/ardumower/blob/master/code/ardumower/pid.h
Code:
class PID
{
public:
PID();
PID(float Kp, float Ki, float Kd);
void reset(void);
float compute();
double Ta; // sampling time
float w; // set value
float x; // current value
float esum; // error sum
float eold; // last error
float y; // control output
float y_min; // minimum control output
float y_max; // maximum control output
float max_output; // maximum output
float Kp; // proportional control
float Ki; // integral control
float Kd; // differential control
unsigned long lastControlTime;
};