利用温湿度传感器DHT11检测环境数据,发送给串口,通过串口监视器检查数据,通过LCD1602进行实时数据显示,并通过LED灯实现不同温湿度范围的预警。 说明:温度大于30℃红灯亮,湿度大于30%黄灯亮,LCD1602显示温度和湿度。
时间: 2024-05-07 21:22:03 浏览: 11
这个项目需要使用DHT11传感器、Arduino单片机、LCD1602液晶屏、LED灯和电阻等电子元件。
首先,需要将DHT11传感器连接到Arduino单片机的数字引脚上,并将LCD1602液晶屏和LED灯也连接到相应的引脚上。
然后,编写Arduino代码实现以下功能:
1. 读取DHT11传感器数据,包括温度和湿度值;
2. 将读取到的数据通过串口发送给电脑,并在串口监视器上显示;
3. 将温度和湿度值显示在LCD1602液晶屏上;
4. 根据温度和湿度范围,控制LED灯的亮灭,实现预警功能。
以下是示例代码:
```C++
#include <dht.h>
#include <LiquidCrystal.h>
#define DHT11_PIN 2
#define RED_LED_PIN 3
#define YELLOW_LED_PIN 4
#define RS 5
#define EN 6
#define D4 7
#define D5 8
#define D6 9
#define D7 10
dht DHT;
LiquidCrystal lcd(RS, EN, D4, D5, D6, D7);
void setup() {
pinMode(RED_LED_PIN, OUTPUT);
pinMode(YELLOW_LED_PIN, OUTPUT);
Serial.begin(9600);
lcd.begin(16, 2);
}
void loop() {
int chk = DHT.read11(DHT11_PIN);
float temp = DHT.temperature;
float hum = DHT.humidity;
if (chk == DHTLIB_OK) {
Serial.print("Temperature: ");
Serial.print(temp);
Serial.print("C, Humidity: ");
Serial.print(hum);
Serial.println("%");
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temp);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
lcd.print(hum);
lcd.print("%");
if (temp > 30) {
digitalWrite(RED_LED_PIN, HIGH);
digitalWrite(YELLOW_LED_PIN, LOW);
} else if (hum > 30) {
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, HIGH);
} else {
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, LOW);
}
} else {
Serial.println("DHT11 read error");
}
delay(2000);
}
```
在这个示例代码中,我们使用了DHT库和LiquidCrystal库来实现读取DHT11传感器数据和控制LCD1602液晶屏的功能。同时,我们使用了if语句来判断温度和湿度是否超过预设范围,并控制LED灯的亮灭。
你可以根据实际情况修改代码中的引脚号和预设范围值,以实现自己的需求。