最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

Arduino中级教程 项目九 实时温湿度检测器

Arduino 少儿编程 1601浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

 

本教程由DFRobot提供。

该教程为中级套件教程。购买地址:

https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-12108364412.9.uh4s3j&id=44531434864

 

想不想做个实时温湿度检测器,走到哪儿,测到哪儿!只需要一个 DHT11 温湿度传感 器就能做到,再外加个1602 的显示屏,实时查看数据。等你之后玩 Arduino够溜的时候, 还可以往控制器上加网络模板,这样数据不仅能实时显示,还能放到网上,或者通过微博发 布出去,是不是很心动了呢?那就先做个最简单的,本地实时显示数据~

 

所需材料

  • 1× DHT11 温湿度传感器

Arduino中级教程 项目九 实时温湿度检测器

  • 1× I2C LCD1602 液晶模块

Arduino中级教程 项目九 实时温湿度检测器

硬件连接

DHT11 温湿度传感器 -> 数字口 4

LCD GND -> GND

LCD VCC -> 5V

LCD SDA -> SDA

LCD SCL -> SCL

A0,A1,A2 全部插上跳冒

Arduino中级教程 项目九 实时温湿度检测器

输入代码

下载代码之前,把库“dht11”和“LiquidCrystal_I2C”放入 Arduino IDE 的 libraries 中,不知道如何加载库的小伙伴可以先看下 项目十二 遥控器 一节,有详细说明过程。

样例代码9-1:

//项目九 – 实时温湿度检测器

#include <dht11.h>

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0×20,16,2);

//设置 LCD 的地址为 0×20,可以设置 2 行,每行 16 个字符

 

dht11 DHT;

#define DHT11_PIN 4

void setup(){

lcd.init(); // LCD 初始化设置

lcd.backlight(); // 打开 LCD 背光

Serial.begin(9600);// 设置串口波特率 9600

//串口输出”Type, status, Humidity(%), Temperature(C)”

Serial.println(“Type,tstatus,tHumidity(%),tTemperature(C)”);

lcd.print(“Humidity(%): “); //LCD 屏显示” Humidity(%):”

lcd.setCursor(0, 1); //光标移到第 2 行,第一个字符

lcd.print(“Temp(C): “); //LCD 屏显示”Temp(C):”

}

void loop(){

int chk; //chk 用于存储 DHT11 传感器的数据

Serial.print(“DHT11, t”);

//读取 DHT11 传感器的数据

chk = DHT.read(DHT11_PIN);

switch (chk){

case DHTLIB_OK:

Serial.print(“OK,t”);

break;

case DHTLIB_ERROR_CHECKSUM:

Serial.print(“Checksum error,t”);

break;

case DHTLIB_ERROR_TIMEOUT:

Serial.print(“Time out error,t”);

break;

default:

Serial.print(“Unknown error,t”);

break;

}

//串口显示温湿度值

Serial.print(DHT.humidity,1);

Serial.print(“,t”);

Serial.println(DHT.temperature,1);

//LCD 显示温湿度值

lcd.setCursor(12, 0);

lcd.print(DHT.humidity,1);

lcd.setCursor(8, 1);

lcd.print(DHT.temperature,1);

delay(1000);

}

下载完代码后,不仅可以从 LCD屏上显示当前的温湿度,还可以从串口中看到值。

Arduino中级教程 项目九 实时温湿度检测器

Arduino中级教程 项目九 实时温湿度检测器

代码回顾

首先,把用到的库声明一下:

#include <dht11.h>

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

dht11.h 和 LiquidCrystal_I2C 的库,我们事先已经加载过库了,那么 Wire.h 的库 为什么不需要加载呢?因为我们下载的Arduino IDE 本身自带这个库。不信的话,你可以 同样找到 libraries 文件夹,Wire.h 库会在里面。

有了现有的库,所以只需要在程序的一开始声明一下这个 LCD:

LiquidCrystal_I2C lcd(0×20,16,2);

0×20:I2C 地址

由 屏 后 面 的 A0~A1 决 定 , 具 体 不 同 的 地 址 可 以 查 看 链 接 : http://wiki.dfrobot.com.cn/index.php/(SKU:DFR0063)IIC_LCD1602_display_mo dule_%E5%85%BC%E5%AE%B9Gadgeteer

16:每行 16 个字符

2: 共2 行

代码中 LiquidCrystal_I2C 涉及函数说明

Arduino中级教程 项目九 实时温湿度检测器

switch…case 语句

“switch”可以理解为是“开关”,多选择开关。与 if 语句相似之处在于 switch…case 也用于判断,又与 if 不同点在于它能判断多种情况。

switch(var){

case 1:

//当 var=1,做点什么事

break; //跳出 switch 语句

case 2:

//当 var=2,做点什么事

break;

default:

//如果没有一种情况是匹配的,运行 default

//default 可有可无,视情况而定

}

注意几点:

1. case 后面是冒号,不是分号。

2. 关键字 break 用于退出 switch 语句,通常每条 case 语句都以break 结尾。如果没有 break语句,switch语句将会一直执行接下来的语句(一直向下)直到遇见一个break, 或者switch 语句结尾。

注:如果对 switch…case 语句用 法 还 有 不 懂 的 , 可 以 查 看 下 Arduino IDE 中的 examples/05.Control/switchCase 相关资料。

 

 

您必须 登录 才能发表评论!