#include <PID_v1.h>
#include <Servo.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define SERVO 5
#define ONE_WIRE_BUS 4
#define PID_TIME 500
#define TIMER 1000
double kp = 900,
ki = 1800,
kd = 112.5;
double input,
output,
setpoint;
unsigned long t;
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensore(&oneWire);
PID myPid(&input, &output, &setpoint, kp, ki, kd, DIRECT);
Servo myServo;
void setup() {
// put your setup code here, to run once:
sensore.begin();
setpoint = 50;
myPid.SetSampleTime(PID_TIME);
myPid.SetOutputLimits(0, 180);
myPid.SetMode(AUTOMATIC);
myServo.attach(SERVO);
myServo.write(0);
t = millis();
}
void loop() {
// put your main code here, to run repeatedly:
if(millis() - t > PID_TIME){
sensore.requestTemperatures();
input = sensore.getTempCByIndex(0);
myPid.Compute();
myServo.write(output);
t = millis();
}
}