Merged two "ifs" into one

This commit is contained in:
Marco D'Agostini 2018-10-17 00:20:31 -05:00 committed by GitHub
parent 9b4ca0e5b6
commit d16b072769
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -66,21 +66,23 @@ bool PID::Compute()
double input = *myInput; double input = *myInput;
double error = *mySetpoint - input; double error = *mySetpoint - input;
double dInput = (input - lastInput); double dInput = (input - lastInput);
double output;
/*Compute integral*/
outputSum+= (ki * error); outputSum+= (ki * error);
/*Add Proportional on Measurement, if P_ON_M is specified*/ /*Compute proportional*/
if(!pOnE) outputSum-= kp * dInput; if(pOnE) output = kp * error;
else { outputSum -= kp * dInput; output = 0; }
if(outputSum > outMax) outputSum= outMax; if(outputSum > outMax) outputSum= outMax;
else if(outputSum < outMin) outputSum= outMin; else if(outputSum < outMin) outputSum= outMin;
/*Add Proportional on Error, if P_ON_E is specified*/ /*Compute derivative*/
double output; output -= kd * dInput;
if(pOnE) output = kp * error;
else output = 0;
/*Compute Rest of PID Output*/ /*Merge*/
output += outputSum - kd * dInput; output += outputSum;
if(output > outMax) output = outMax; if(output > outMax) output = outMax;
else if(output < outMin) output = outMin; else if(output < outMin) output = outMin;