#include <OneWire.h>
#include <DallasTemperature.h>
#include <PID_v2.h>
// 定义DS18B20温度传感器引脚
#define ONE_WIRE_BUS 11
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// 定义PID参数
double setpoint = 28.0;
double kp = 2.0; // 2
double ki = 5.0; // 5
double kd = 1.0; // 1
double input, output;
PID pid(&input, &output, &setpoint, kp, ki, kd, DIRECT);
void setup() {
Serial.begin(9600);
sensors.begin();
// 初始化PID
pid.SetMode(AUTOMATIC);
}
void loop() {
sensors.requestTemperatures();
// 读取温度值
input = sensors.getTempCByIndex(0);
// 更新PID计算
pid.Compute();
Serial.print("Current temperature: ");
Serial.println(input);
Serial.print("PID output: ");
Serial.println(output);
// 控制温度
analogWrite(9, output);
delay(1000);
}