/********************************************************
* PID Basic Example
* Reading analog input 0 to control analog PWM output 3
********************************************************/
#include <PID_v1.h>
#define PIN_INPUT 0
#define PIN_OUTPUT 3
//Define Variables we'll be connecting to
double Setpoint, Input, Output;
//Specify the links and initial tuning parameters
double Kp=0.1, Ki=0.01, Kd=0;
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);
void setup()
{
//initialize the variables we're linked to
Input = analogRead(PIN_INPUT);
Setpoint = 500;
//turn the PID on
myPID.SetMode(AUTOMATIC);
Serial.begin(115200);
myPID.SetSampleTime(1000);
}
void loop()
{
Input = analogRead(PIN_INPUT);
if(myPID.Compute()){
Serial.print(Input);
Serial.print(" ");
analogWrite(PIN_OUTPUT, Output);
Serial.println(Output);
};
}