#include <PID_v2.h>
#define LDR_INPUT 2 //LDR to A0
#define LED_OUTPUT 5 //LED to D3
//Variables
double Setpoint, Input, Output;
//PID Parameters
double Kp = 2, Ki = 10, Kd = 1;
//Start PID Instance
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);
void setup()
{
//Start Serial
Serial.begin(9600);
//pinMode(LED_OUTPUT, OUTPUT);
//Set point (brightness target)
Input = analogRead(LDR_INPUT);
Setpoint = 100;
//Turn the PID on
myPID.SetMode(AUTOMATIC);
//Adjust PID values
myPID.SetTunings(Kp, Ki, Kd);
}
void loop()
{
//Read photoresistor value
Input = map(analogRead(LDR_INPUT), 0, 1024, 0, 255);
//PID calculation
myPID.Compute();
//Write the output as calculated by the PID function
analogWrite(LED_OUTPUT, Output);
//Send data for serial monitoring
Serial.print(Input);
Serial.print(" ");
Serial.println(Output);
}