PID Library Brought in from the PID Arduino Library

Dependents:   Basic_PID wheelchaircontrol wheelchaircontrolRosCom wheelchaircontrol ... more

Revision:
1:37c3ab46d475
Parent:
0:58f3a6c65ad5
Child:
2:60801ab3cbf9
--- a/PID.cpp	Tue Aug 14 23:22:50 2018 +0000
+++ b/PID.cpp	Tue Aug 28 23:24:01 2018 +0000
@@ -2,11 +2,12 @@
 #include "mbed.h"
 
 PID::PID(double* Input, double* Output, double* Setpoint, double Kp, double Ki, double Kd, int POn, int ControllerDirection){
+    PIDtimer.start();
+    PIDtimer.reset();   
     myOutput = Output;
     myInput = Input;
     mySetpoint = Setpoint;
-    inAuto = false;
-    PIDtimer.start();
+    inAuto = true;
     PID::SetOutputLimits(0, 1); //default output limit corresponds to
                                                 //the arduino pwm limits
     SampleTime = .1;                           //default Controller Sample Time is 0.1 seconds
@@ -15,7 +16,7 @@
     PID::SetTunings(Kp, Ki, Kd, POn);
 
     lastTime = PIDtimer.read()-SampleTime;
-        printf("the values are %f, %f, %f, %f, %f, %f \r\n", *myOutput, *myInput, *mySetpoint, kp, ki, kd);
+      //  printf("the values are %f, %f, %f, %f, %f, %f \r\n", *myOutput, *myInput, *mySetpoint, kp, ki, kd);
     }
     
 /* Compute() **********************************************************************
@@ -26,7 +27,6 @@
  **********************************************************************************/
 bool PID::Compute()
 {
-   printf("input %f output %f pOn %i Setpoint %f outmin %f outmax %f lastTime %f  \r\n", *myInput, *myOutput, pOn, *mySetpoint, outMin, outMax, lastTime);
    if(!inAuto) return false;
    double now = PIDtimer.read();
    double timeChange = (now - lastTime);
@@ -37,10 +37,9 @@
       double error = *mySetpoint - input;
       double dInput = (input - lastInput);
       outputSum+= (ki * error);
-
+        
       /*Add Proportional on Measurement, if P_ON_M is specified*/
-      if(!pOnE) outputSum-= kp * dInput;
-
+      if(!pOnE) outputSum -= kp * dInput;
       if(outputSum > outMax) outputSum= outMax;
       else if(outputSum < outMin) outputSum= outMin;
 
@@ -48,10 +47,8 @@
        double output;
       if(pOnE) output = kp * error;
       else output = 0;
-        printf("output %f\r\n", output);
       /*Compute Rest of PID Output*/
       output += outputSum - kd * dInput;
-        printf("output2 %f\r\n", output);
 
         if(output > outMax) output = outMax;
       else if(output < outMin) output = outMin;
@@ -60,9 +57,14 @@
       /*Remember some variables for next time*/
       lastInput = input;
       lastTime = now;
+      printf("the values are %f, %f, %f, %f \r\n", *myOutput, *myInput, *mySetpoint, lastTime);
+
         return true;
    }
-   else return false;
+   else 
+   {
+       return false;
+    }
 }
 
 /* SetTunings(...)*************************************************************