标题:
基于Arduino的DHT11湿度传感器代码
[打印本页]
作者:
tomtomhuang
时间:
2023-7-24 21:59
标题:
基于Arduino的DHT11湿度传感器代码
电路原理图如下:
51hei.png
(81 KB, 下载次数: 47)
下载附件
2023-7-25 00:42 上传
//This is the program for Aruino UNO R3 in the project.
#include <DHT11.h>
#include <LiquidCrystal.h>
DHT11 dht11(2);
const int rs = 12, en = 11, d4 = 6, d5 = 7, d6 = 8, d7 = 9;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
bool Alert = false;
bool Init = true;
int InitTime = 7200;
int BZ = 10;
int LED_R = 3;
int LED_G = 4;
int LED_B = 5;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
lcd.begin(16,2);
pinMode(LED_R, OUTPUT);
pinMode(LED_G, OUTPUT);
pinMode(LED_B, OUTPUT);
pinMode(BZ, OUTPUT);
digitalWrite(LED_R, LOW);
digitalWrite(LED_G, LOW);
digitalWrite(LED_B, LOW);
lcd.setCursor(0, 0);
lcd.print("Initiating......");
analogWrite(BZ, 0);
}
void loop() {
// put your main code here, to run repeatedly:
float humidity = dht11.readHumidity();
while(Init)
{
lcd.setCursor(0, 1);
if(InitTime == 0)
{
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" ");
Init = false;
}
else
{
if(InitTime / 3600 < 10)
{
lcd.print("0");
lcd.setCursor(1, 1);
lcd.print(InitTime / 3600);
}
else
{
lcd.print(InitTime / 3600);
}
lcd.setCursor(2, 1);
lcd.print("h");
lcd.setCursor(3, 1);
if(InitTime % 3600 / 60 < 10)
{
lcd.print("0");
lcd.setCursor(4, 1);
lcd.print(InitTime % 3600 / 60);
}
else
{
lcd.print(InitTime % 3600 / 60);
}
lcd.setCursor(5, 1);
lcd.print("m");
lcd.setCursor(6, 1);
if(InitTime % 3600 % 60 < 10)
{
lcd.print("0");
lcd.setCursor(7, 1);
lcd.print(InitTime % 3600 % 60);
}
else
{
lcd.print(InitTime % 3600 % 60);
}
lcd.setCursor(8, 1);
lcd.print("s");
}
delay(1000);
InitTime -= 1;
}
if (humidity != -1) {
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println(" %");
} else {
Serial.println("Error reding data.");
}
// Humidity is too high
if (humidity >= 55) {
digitalWrite(LED_R, LOW);
digitalWrite(LED_G, LOW);
digitalWrite(LED_B, HIGH);
analogWrite(BZ, 1);
}
// Humidity is too low
else if (humidity < 45) {
digitalWrite(LED_R, HIGH);
digitalWrite(LED_G, LOW);
digitalWrite(LED_B, LOW);
analogWrite(BZ, 1);
}
// Humidity is good
else {
digitalWrite(LED_R, LOW);
digitalWrite(LED_G, HIGH);
digitalWrite(LED_B, LOW);
}
lcd.setCursor(0, 0);
lcd.print(humidity);
delay(1000);
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1