HI again everyone. I'm just wondering if the SetControllerDirection() function is no longer used. I'm experimenting with the PID library using the the adaptive tunings example and when I try to use this function I get " 'SetControllerDirection' was not declared in this scope" as if it was an undeclared variable. Any idea whats going on? Thanks.
/********************************************************
- Arduino PID Library
- by Brett Beauregard
- contact: br3ttb@gmail.com
- PID Adaptive Tuning Example
- One of the benefits of the PID library is that you can
- change the tuning parameters at any time. this can be
- helpful if we want the controller to be agressive at some
- times, and conservative at others. in the example below
- we set the controller to use Conservative Tuning Parameters
- when we're near setpoint and more agressive Tuning
- Parameters when we're farther away.
********************************************************/
#include <PID_v1.h>
//Define Variables we'll be connecting to
double Input, Output;
double Setpoint;
int pin=3;
//Define the aggressive and conservative Tuning Parameters
double aggKp=4, aggKi=0.2, aggKd=1;
double consKp=1, consKi=0.05, consKd=0.25;
//Specify the links and initial tuning parameters
PID myPID(&Input, &Output, &Setpoint, consKp, consKi, consKd, DIRECT);
void setup()
{
//initialize the variables we're linked to
Serial.begin(9600);
Serial.setTimeout(10);
Input = analogRead(0);
Setpoint = 900;
//turn the PID on
myPID.SetMode(AUTOMATIC);
}
void loop()
{
Input = analogRead(0);
if (Serial.available()>0)
{
Setpoint=Serial.parseInt();
Serial.println(Setpoint);
}
if (Setpoint>Input)
{
pin=2;
SetControllerDirection(DIRECT);// Fails at this line "was not declared in this scope"
}
else
{
pin=3;
SetControllerDirection(REVERSE);
}
Serial.print(Setpoint);
Serial.print(" ");
Serial.println(Input);
double gap = abs(Setpoint-Input); //distance away from setpoint
if(gap<10)
{ //we're close to setpoint, use conservative tuning parameters
myPID.SetTunings(consKp, consKi, consKd);
}
else
{
//we're far from setpoint, use aggressive tuning parameters
myPID.SetTunings(aggKp, aggKi, aggKd);
}
myPID.Compute();
analogWrite(pin,Output);
}