DHT11 温湿度传感器项目:LED 指示与压电蜂鸣器报警
组件与物料
- DHT11 温湿度传感器(4 引脚)×1
- LED ×3(绿×1、红×2)
- 220 Ω 电阻 ×3
- 压电蜂鸣器 ×1
- Arduino UNO ×1
- 杜邦线若干
软件与库
项目功能
实时读取温湿度,通过三色 LED 指示温度区间:
- ≤ 20 °C:蓝 LED 亮 + 蜂鸣器短鸣 1 s(过冷)
- 20–27 °C:绿 LED 亮 2 s(舒适)
- ≥ 29 °C:红 LED 亮 + 蜂鸣器短鸣 1 s(过热)
串口每 2 秒打印一次温湿度数值。
接线说明
- DHT11 DATA → D5
- 蓝 LED (过冷) → A0
- 绿 LED (舒适) → A1
- 红 LED (过热) → A2
- 蜂鸣器 → D9
- 所有 LED 串 220 Ω 电阻接地
完整代码
#include
#include
#define DHTPIN 5
#define DHTTYPE DHT11
#define LED_COLD A0
#define LED_OK A1
#define LED_HOT A2
#define BUZZER 9
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(LED_COLD, OUTPUT);
pinMode(LED_OK, OUTPUT);
pinMode(LED_HOT, OUTPUT);
pinMode(BUZZER, OUTPUT);
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t");
Serial.print("Temp: "); Serial.print(t); Serial.println(" *C");
if (t <= 20) {
Serial.println("Too cold!");
digitalWrite(LED_COLD, HIGH); digitalWrite(BUZZER, HIGH);
delay(1000); digitalWrite(LED_COLD, LOW); digitalWrite(BUZZER, LOW);
}
else if (t < 27) {
Serial.println("Perfect!");
digitalWrite(LED_OK, HIGH); delay(2000); digitalWrite(LED_OK, LOW);
}
else if (t >= 29) {
Serial.println("Too hot!");
digitalWrite(LED_HOT, HIGH); digitalWrite(BUZZER, HIGH);
delay(1000); digitalWrite(LED_HOT, LOW); digitalWrite(BUZZER, LOW);
}
}
注意:原代码中 if (20 < t < 27) 在 C++ 中不会按预期工作,已修正为 else if (t < 27)。
制造工艺
- 树莓派 + DHT11 + ThingSpeak:打造你的第一个物联网项目
- 树莓派自动化气雾栽培系统:湿度传感器智能控制
- Portenta H7 对接 MAX6675 热电偶温度传感器教程
- Arduino Nano 与 MPU-6050 构建实时陀螺仪游戏
- K30 CO₂ 传感器:室内空气质量实时监测
- Unopad:基于 Arduino 的无缝 Ableton Live MIDI 控制器
- Arduino + DHT11 + 以太网盾板温湿度数据记录仪
- 智能物联网罐:ESP8266 + Arduino + 超声波传感器实时监测罐内物位
- 自制简易红外避障传感器:IR LED + 光电二极管 + Arduino
- DFRobot 电容指纹传感器 (ID809) 接入 Arduino/ESP8266 完整教程
- Blynk + Arduino 读取 DHT11 温湿度数据教程
- 用 Arduino Uno 和 1Sheeld 构建 4x4x4 LED 立方体 - 互动音乐可视化项目