一 硬件

DHT11这款温湿度传感器,精度湿度±5%RH, 温度±2℃,如下图所示【1】

4个引脚接线一目了然,2号data用于传感器与微控制器之间的通信,接UNO的某数字引脚,3号NC空置即可。目前我对新引入的硬件都是知道表面功能和连线方式就行了,硬件内部的一些机制还不求甚解。比如搜索DHT11就发现其他博主写的都是通信过程、高低电平时序图什么的【2,3】,看不懂呀!

另外参见【3】,是将2号Data外接上拉电阻,保证总线空闲时是高电平,接线如下图

我就是将2号引脚直接外接UNO数字引脚了,目前没问题,就不改动了,上图留作以后参考。

二 代码

1.实现功能,就是让DHT11读取的温湿度数据在LCD1602上面显示出来,LCD1602的设置和连线和之前的内容一致【4】

2.具体代码,其中闪烁和滚动出屏的部分参考了【5】

//LCD显示温湿度传感器DHT11读取的值
//LCD字符闪烁和滚动
#include <dht.h> //声明调用dht库
dht DHT;//创建一个对象
#define DHT_pin 9//DHT11接的数字引脚
#include <LiquidCrystal.h>//声明调用LCD的相关库
const int rs=12,en=11,d4=5,d5=4,d6=3,d7=2;//LCD引脚
LiquidCrystal lcd(rs,en,d4,d5,d6,d7);//创建一个名为lcd的实例(对象)这里是4线法
void setup() {lcd.begin(16,2);//初始化LCD的宽度和高度,设置16列cols 2行rows,先列后行
}void loop() {// 显示“Rick,What's the weather like?”,闪烁三次并消失再显示温度和湿度DHT.read11(DHT_pin);//从DHT传感器引脚读取lcd.clear();lcd.print("Rick, What's the");//lcd.setCursor(0,1);//把光标设置在0列1行(第2行开头)上lcd.print("weather like?");delay(2000);//字符闪烁3次for(int i=0;i<3;i++){lcd.noDisplay();delay(500);lcd.display();delay(500);}//问句消失再显示湿度和温度lcd.clear();//清屏,光标回到左上角lcd.print("Humidity(%):");//共12个字符lcd.setCursor(12,0);//光标定位到上面字符的后面,即第1行第13列lcd.print(DHT.humidity,1);//显示采集到湿度值,保留小数点后1位lcd.setCursor(0,1);//光标定位到第1列第2行lcd.print("Temp(C):");//8个字符lcd.setCursor(8,1);//光标定位到第9列第2行lcd.print(DHT.temperature,1);显示采集到温度值,保留小数点后1位delay(2000);//向左滚动出屏for(int j=0;j<16;j++){lcd.scrollDisplayLeft();delay(500);//这个延迟时间可以调节滚动速度,越小滚动越快}
}

3. 知识点

1)关于DHT11的使用,首先需要加载dht.h这个库,卖家发的源码里面有个dht的文件夹,里面有两个文件dht.h和dht.cpp.我就把这个文件夹拷进\libraries里面,结合#include 语句,实现库的加载。

2)通过搜索发现关于DHT11并不是只有dht.h这个库,还有一种dht11.h。若是引用后一种库,代码中读取数据的语句也不一样了,卖家发给我的资料里面在不同的地方居然两种库都有,害得我一直不知哪里错了。我引用库是#include <dht.h>  后续语句应该是dht对象.read11(pin),而有的网页搜出来的结果是对象.read(),原因就是代码开头引用的库不一样,估计只有我这种小白才会在这个问题上晕圈半天吧!另外可以自己写dht头文件和cpp文件,这样自定义更加方便,但这个离我有点远。

3)有了read11()这个语句后,再写对象.temperature 对象.humidity就能得到温度和湿度值了,我也试了下不写read11(),直接对象.temperature 对象.humidity,结果一直是0.唉,反正这个库文件我也不会查阅,就感觉规定成这个形式有点奇怪,为啥不是read11()这句直接得到值呢?就像UNO的digitalRead()语句那样,而要分开写,还是用三句代码哩!?以后我能自己改库文件了,我就试试自定义!不知这种能不能改?

4)LCD屏幕的初步显示功能在【4】里面写了,所以这回就让显示效果更多一些,当然这就需要查找一下LIquidCrystal库里面有哪些函数和哪些对应功能了,这个参考还是比较多的【6,7】。具体实现的功能我在代码里面都标注了,目前我也是照搬而已。问题和之前一样,如果这个库函数不是这么普遍易搜,能不能通过查看库文件我就知道有哪些函数和功能呢?应该是可以的,只不过我目前还看不懂头文件和cpp文件而已。

最后结果见下图

视频和动图太大,就不传了,还有一个问题,就是摄氏度这个符号没有打全。

【1】DHT11 DHT22温度、湿度传感器如何与Arduino配合使用及其接口 - 知乎

【2】DHT11温湿度传感器(详细)_做个疯狂的程序员的博客-CSDN博客_dht11

【3】Arduino实验——DHT11读取温湿度_R先生一天不学习就浑身难受-CSDN博客

【4】Arduino基础入门之十二 LCD1602A初步显示_u013978070的专栏-CSDN博客

【5】Arduino学习笔记:基于LiquidCrystal库运行LCD1602_echobox的博客-CSDN博客

【6】LiquidCrystal库函数 - Dumblidor - 博客园

【7】Arduino - LiquidCrystal

Arduino基础入门之十三 温湿度传感器DHT11相关推荐

  1. Arduino基础入门篇30—数字温度传感器DS18B20

    温度传感器的种类繁多,按照测量方式分为接触式和非接触式,按照传感器材料分为热电阻和热电偶两类,按照工作原理分为模拟式和数字式.上一篇介绍了模拟温度传感器LM35,本篇介绍数字温度传感器DS18B20的 ...

  2. 【Arduino】温湿度传感器(DHT11)控制设计 四位数码管,LCD1602,带蜂鸣器、LED灯报警,串口输入设定阈值

    @[TOC]( [Arduino]温湿度传感器(DHT11)控制设计 四位数码管,LCD1602,带蜂鸣器.LED灯报警,串口输入设定阈值 ) 一.实验器材 UNO控制板:1块 共阳极四位数码管:1个 ...

  3. Arduino基础入门套件教程PDF

    Arduino基础入门套件教程PDF: 上期分享了<Arduino+Android互动智作:初入物联网>高清书签中文版,这期分享<Arduino基础入门套件教程PDF>都是在闯 ...

  4. STM32应用(八)数字温度传感器DS18B20、数字温湿度传感器DHT11(软件模拟I2C)

    文章目录 1.DS18B20 数字温度传感器实验 1.1 DS18B20简介 1.2 硬件与IO口配置 1.3 实物图与接线 1.4 工程配置 1.5 驱动和检测代码编写 1.5.1 ds18b20. ...

  5. 湿度检测仪输入示数计算机编程,温湿度传感器DHT11驱动程序 - 全文

    温湿度传感器DHT11驱动程序 - 全文 来源:网络整理 作者:2018年01月22日 16:52 [导读] 本文开始介绍了驱动程序的定义与驱动程序的作用,其次介绍了DHT11温湿度传感器特性.引脚说 ...

  6. zigbee CC2530 系列教程 15 温湿度传感器DHT11实验

    所有课程见此链接: zigbee CC2530 系列教程 0 课程介绍 4.12温湿度传感器DHT11实验 4.12.1 实验目的 学习使用温湿度传感器DHT11,并在串口显示温湿度数据. 4.12. ...

  7. 【FPGA】Verilog代码实现温湿度传感器DHT11

    #今天也是咸鱼的一天~ 因为参加Robei 杯 是要做一个机器人,先不说这个机器人具体怎么机器法,但是和外界互通的传感器肯定少不了,通过获取外界环境数据,进行处理,然后做出各种各样的功能. 先来讲个简 ...

  8. 有关温湿度传感器DHT11的C语言编程,数字温湿度传感器DHT11 操作C语言源代码

    1.数字温湿度传感器DHT11 操作C语言源代码 2.带校验 3.带读操作超时处理 //IO定义 #defineP_DataIN_DHT11PB0_IN #defineP_DataOUT_DHT11P ...

  9. 温湿度传感器DHT11介绍

    温湿度传感器DHT11简介 DHT11数字温湿度传感器是一种出厂时经过校准的数字信号输出的温湿度数字温湿度传感器.DHT11数字温湿度传感器应用温湿度传感技术和数字采集技术,确保其具有极高的可靠性和卓 ...

最新文章

  1. 聊聊flink Table的groupBy操作
  2. 《中国人工智能学会通讯》——10.22 能源互联网时代
  3. 类和对象—对象特性—函数的分类和调用
  4. 台式电脑可以连wifi吗_[Windows] wifi音箱:台式电脑也可以连接蓝牙音箱了
  5. HDU-2149(博弈)
  6. Java 源码中 unchecked 什么意思
  7. 关于java中线程yield()方法问题
  8. 代码编辑器sublime text 4使用小技巧--快捷键说明
  9. Android 系统(193)----图解从URL到网页通信原理
  10. 【大健康】高保真交互原型模板+大健康生态问诊app+饮食运动数据血糖血压健康数据的管理移动端+在线挂号、体检预约、远程在线视频电话图文问诊医疗服务+积分商城设备管理+健康档案
  11. stm32F1的 PA13/PA14/PA15/PB3/PB4 作为普通引脚使用
  12. Java中常见数据结构:list与map -底层如何实现
  13. 【渝粤题库】陕西师范大学300006 史学概论
  14. 信用评分卡 (part 2of 7)
  15. 根据银行卡号获取logo,并提取图片主题色(小程序版)
  16. C语言的一些基础语法
  17. ALLEGRO PCB design GXL软件的菜单解释
  18. <Zhuuu_ZZ>大数据技术之Flume详解
  19. LeetCode No.202 快乐数
  20. 使用Vue+vue-router+路由守卫实现路由鉴权功能实战

热门文章

  1. 2《小学数学教材解读策略研究》开题报告
  2. 【数据结构/C语言版】【图】邻接表存储
  3. FreeRTOS 任务优先级说明
  4. 统计英文字数c语言,用C语言作纯英文字数统计
  5. 解决HTTP GET方法调用带有body问题
  6. JAVA基础作业练习—自定义异常之模拟ATM
  7. [bzoj4735] 你的生命已如风中残烛
  8. 沧小海的《xilinx的A7系列芯片资源学习笔记》之第一部分:I/O BANK(三)
  9. python374安装教程_Centos7.6安装工具(5)--编译安装python374
  10. matlab运行LCT跟踪算法代码