本篇文章由 VeriMake 旧版论坛中备份出的原帖的 Markdown 源码生成
原帖标题为:温湿度传感器|测温湿度
原帖作者为:hi(旧版论坛 id = 178)
原帖由作者初次发表于 2021-03-30 12:43:38
在I2C LCD1602液晶模块上显示温湿度传感器采集到的数据
用温湿度模块采集周围环境的温度和湿度,然后通过I2C LCD1602液晶模块显示出来。
准备材料:
NanoC 1,数据线 1,I2C LCD1602液晶模块 1,dht11温湿度模块 1,母对母杜邦线 *7。
接线图:
温湿度模块
GND—GND
VCC—VCC
SDA—A4
SCL—A5
GND—GND
DATA—2
VCC—5V
程序
需要下载的库文件有 dht11.h
,LiquidCrystal_I2C.h
,可以直接在网上下载相应库文件,下载后的文件夹放在arduino文件夹里的libraries
目录下,否则程序不能正常运行。
#include <dht11.h>
#include <LiquidCrystal_I2C.h>
dht11 DHT11;
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C 地址 0x27, 16 列 2 行
void setup()
{ lcd.init(); // 初始化 lcd
lcd.backlight();
lcd.setCursor(4,0); //设置起始位置 第一行第四列
lcd.print("Temp"); //显示文字temp
lcd.setCursor(0,1); //设置起始位置第二行第一列
lcd.print("Humidity"); //显示文字humidity
}
void loop()
{
int chk=DHT11.read(2); //定义一个变量,存储通过温湿度模块采样到的数据
if(chk==0) //如果采样到数据则返回0,执行if里面的程序
{
lcd.setCursor(9,0); //设置起始位置第一行第九列
lcd.print((float)DHT11.temperature,2); //显示测得温度并保留两位小数
lcd.print((char)0xDF); //显示单位
lcd.print("C");
lcd.setCursor(9,1); //同上
lcd.print((float)DHT11.humidity,2); //显示测得湿度
lcd.print("%");
}
delay(2000);
}
在库管理器中安装以下两个库
运行结果
第一行显示温度,后面数字是测得的温度数据,第二行是湿度,后面数字是测得的湿度数据,这个在运行后会首先显示两个英文单词,后面测得的数据可能会延迟一会才能显示,读者在复现的时候可以耐心等待一下。