From d16b072769c1c23954177a17ac3f7dca8e27df01 Mon Sep 17 00:00:00 2001 From: Marco D'Agostini Date: Wed, 17 Oct 2018 00:20:31 -0500 Subject: [PATCH] Merged two "ifs" into one --- PID_v1.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/PID_v1.cpp b/PID_v1.cpp index cb6637c..da84683 100644 --- a/PID_v1.cpp +++ b/PID_v1.cpp @@ -66,21 +66,23 @@ bool PID::Compute() double input = *myInput; double error = *mySetpoint - input; double dInput = (input - lastInput); + double output; + + /*Compute integral*/ outputSum+= (ki * error); - /*Add Proportional on Measurement, if P_ON_M is specified*/ - if(!pOnE) outputSum-= kp * dInput; + /*Compute proportional*/ + if(pOnE) output = kp * error; + else { outputSum -= kp * dInput; output = 0; } if(outputSum > outMax) outputSum= outMax; else if(outputSum < outMin) outputSum= outMin; - /*Add Proportional on Error, if P_ON_E is specified*/ - double output; - if(pOnE) output = kp * error; - else output = 0; + /*Compute derivative*/ + output -= kd * dInput; - /*Compute Rest of PID Output*/ - output += outputSum - kd * dInput; + /*Merge*/ + output += outputSum; if(output > outMax) output = outMax; else if(output < outMin) output = outMin;