#include <DHT.h>
#define DHTPIN 2 // DHT22连接的数字引脚
#define DHTTYPE DHT22 // 指定使用DHT22传感器
#define LED_PIN 3 // LED连接的数字引脚
DHT dht(DHTPIN, DHTTYPE); // 创建DHT22对象
int humidityThreshold = 50; // 湿度阈值
int loopCount = 0; // 循环计数器
int maxLoops = 5; // 最大循环次数
void setup() {
pinMode(LED_PIN, OUTPUT);
dht.begin();
Serial.begin(9600);
}
void loop() {
// 读取湿度值
float h = dht.readHumidity();
// 检查读数是否失败,并在失败时等待2秒后重试
if (isnan(h)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Humidity: ");
Serial.print(h);
Serial.println("%");
// 判断是否需要浇水
if (h < humidityThreshold) {
digitalWrite(LED_PIN, HIGH); // 点亮LED灯(模拟浇水)
Serial.println("Watering...");
delay(5000); // 浇水5秒
digitalWrite(LED_PIN, LOW); // 关闭LED灯(停止浇水)
} else {
digitalWrite(LED_PIN, LOW); // 保持LED灯关闭
}
// 增加循环计数器
loopCount++;
// 检查是否达到最大循环次数
if (loopCount >= maxLoops) {
Serial.println("Max loops reached. Stopping.");
while (true) {
// 进入无限循环,停止执行
}
}
delay(2000); // 检测间隔
}