一、电路连接
LCD1602IIC
LCD1602IIC引脚 | Arduino引脚 |
---|---|
VCC | 5V |
GND | GND |
SDA | A4 |
SCL | A5 |
我这里的LCD1602是IIC的,所以只需要4根线
1-WIRE
传感器引脚 | Arduino引脚 |
---|---|
- | GND |
S | 8 |
+ | 5V |
中间的线是要接5V的
这里是DHT11的库:DHT11
二、程序
#include <dht11.h> //引用dht11库文件,使得下面可以调用相关参数
#include <Wire.h>
#include <LiquidCrystal_I2C.h> //引用I2C库
#define dht11Pin 8 //定义温湿度针脚号为8号引脚
dht11 dht; //实例化一个对象
LiquidCrystal_I2C lcd(0x27,16,2); //这里是0x27
void setup() //初始化函数,只执行一次
{
Serial.begin(9600); //设置波特率参数
pinMode(dht11Pin, OUTPUT); //通过定义将Arduino开发板上dht11Pin引脚(8号口)的工作模式转化为输出模式
lcd.init(); // 初始化LCD
lcd.backlight(); //设置LCD背景等亮
lcd.setCursor(0,0);
lcd.print(" Thermometer ");
delay(2000);
lcd.clear();
}
void loop() //loop函数,重复循环执行
{
SerialTem();
ther();
delay(1000); //延时1秒
}
void ther()//温湿度计
{
int tol = dht.read(dht11Pin); //将读取到的值赋给tol
int temp = (float)dht.temperature; //将温度值赋值给temp
int humi = (float)dht.humidity; //将湿度值赋给humi
lcd.setCursor(0,0);
lcd.print("Tem:");
lcd.setCursor(4,0);
lcd.print(temp);
lcd.setCursor(6,0);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Hum:");
lcd.setCursor(4,1);
lcd.print(humi);
lcd.setCursor(6,1);
lcd.print("%");
}
void SerialTem()//串口打印温度湿度
{
int tol = dht.read(dht11Pin); //将读取到的值赋给tol
int temp = (float)dht.temperature; //将温度值赋值给temp
int humi = (float)dht.humidity; //将湿度值赋给humi
Serial.print("Temperature:"); //在串口打印出Tempeature:
Serial.print(temp); //在串口打印温度结果
Serial.println(".C"); //在串口打印出℃
Serial.print("Humidity:"); //在串口打印出Humidity:
Serial.print(humi); //在串口打印出湿度结果
Serial.println("%"); //在串口打印出%
}