PID DHT11 温湿度 舵机 控制代码
时间: 2024-02-10 08:39:17 浏览: 100
温湿度传感器/DHT11驱动代码
以下是一个基于Arduino的PID控制DHT11温湿度和舵机的示例代码:
```
#include <PID_v1.h>
#include <DHT.h>
#include <Servo.h>
#define DHTPIN 2 // DHT11连接到Arduino的引脚
#define DHTTYPE DHT11 // DHT11型号
#define SERVOPIN 9 // 舵机连接到Arduino的引脚
DHT dht(DHTPIN, DHTTYPE); // 初始化DHT11温湿度传感器
Servo myservo; // 初始化舵机
// 设置PID控制参数
double Setpoint, Input, Output;
double Kp = 2, Ki = 5, Kd = 1;
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);
void setup() {
Serial.begin(9600);
dht.begin();
myservo.attach(SERVOPIN);
myPID.SetMode(AUTOMATIC);
myPID.SetSampleTime(1000); // 设置采样时间
myPID.SetOutputLimits(0, 180); // 设置舵机转动范围
}
void loop() {
double humidity = dht.readHumidity(); // 读取湿度值
double temperature = dht.readTemperature(); // 读取温度值
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print("%\t");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" *C");
Input = humidity; // 将湿度值作为PID输入
Setpoint = 50; // 设置湿度目标值为50%
myPID.Compute(); // 计算PID输出
myservo.write(Output); // 控制舵机转动
delay(1000); // 延迟1秒
}
```
该代码会读取DHT11温湿度传感器的数据,将湿度值作为PID控制的输入,设置目标湿度为50%,通过计算PID输出来控制舵机的转动。PID控制的参数可以根据实际情况进行调整。
阅读全文