零基础小白用Arduino和1602屏做的的电子温湿度计

2017-01-145.6万
AI 快速预览详细 收起
本文介绍了零基础新手如何使用Arduino UNO、DHT-11温湿度感应器和1602显示屏制作电子温湿度计。作者通过查找教程并自行组合代码,成功解决了1602屏幕不显示数据的问题。最终实现了在1602屏幕和串口监视器上同时显示温湿度数据的效果。整个过程包括硬件连接、代码编写和数据校验。


:)
本人为一中年电子小白,所学专业与电子完全不沾边。小时候唯一鼓捣电子元器件的就是大一(96年)开始给人攒PC机赚钱,到大三发现通过所学专业炒更更赚钱时果断扔了螺丝刀。这次接触Arduino是因为上小学三年级的儿子学校教机器人,为了辅导儿子而买了点板子和零件。拆开包装的一瞬间找到了21年前攒机的感觉,遂。。。自己试着玩儿起来。
平常工作忙,在论坛上一直潜水。这周末正好没应酬没加班,就开始了自己的探索之旅。

所用部件:
1、Arduino UNO 一个
2、DHT-11温湿度感应器一个
3、1602显示屏一个
4、面包版一个
5.杜邦线一大把
5、202 2K电位器一个

工作流程:
1、先上网翻帖子,找到别人详细的教程。最终选中了DFRobot上的一篇。根据上面的连线图把自己的零件照猫画虎的连接了起来。
2、把论坛帖子上的代码copy过来,直接校验、上传。
3、发现失败了!!!串口监视器能显示湿度、温度,但是在1602屏幕上啥都没有!
3、再次翻帖子,多找了几个教程,最后根据自己无限的自学能力总结了一下各帖子代码,自行组合了一套新代码(在这里手动佩服自己)。最终搞定!1602屏幕和串口监视器上都能显示数据了!

以下是部件被组装起来的样子

加一张手画的示意图:)
零基础小白用Arduino和1602屏做的的电子温湿度计图13

先来个数据显示^o^
零基础小白用Arduino和1602屏做的的电子温湿度计图2

1、Arduino UNO
零基础小白用Arduino和1602屏做的的电子温湿度计图1

2、插在面包板上的1602显示屏


3、DHT-11温湿度感应器
零基础小白用Arduino和1602屏做的的电子温湿度计图3

4、杜邦线连接
零基础小白用Arduino和1602屏做的的电子温湿度计图4

零基础小白用Arduino和1602屏做的的电子温湿度计图5

零基础小白用Arduino和1602屏做的的电子温湿度计图6
这里说一下,很多帖子上的电位器连线都是三根,可是我用三线连接永远是不能显示文字的,当我拔掉左边杜邦线时就正常了。小白求问:这是为啥啊???

5、放到冰桶里虐待
零基础小白用Arduino和1602屏做的的电子温湿度计图7

6、放到烧水壶里继续虐待
零基础小白用Arduino和1602屏做的的电子温湿度计图8

7、数据校验
零基础小白用Arduino和1602屏做的的电子温湿度计图9

8、收集数据并用Excel做表格
零基础小白用Arduino和1602屏做的的电子温湿度计图10

零基础小白用Arduino和1602屏做的的电子温湿度计图11

9、最后来张全家福
零基础小白用Arduino和1602屏做的的电子温湿度计图12


以下是自己组合了三个教程的代码:

#include <LiquidCrystal.h>
//LiquidCrystal lcd(12,11,5,4,3,2);  //定义脚位
LiquidCrystal lcd(10,9,7,6,5,8);  //定义显示屏接脚位
#include <dht11.h>
#include <Wire.h>
dht11 DHT;
#define DHT11_PIN 4
void setup()                                                                                    
{
  lcd.begin(16,2); //设置LCD显示的数目。16 X 2:16格2行。
Serial.begin(9600);// 设置串口波特率9600
//串口输出”Type, status, Humidity(%), Temperature(C)”
Serial.println("Type,\tHumidity(%),\tTemperature(C)");
}
void loop()
{
int chk;//chk用于存储DHT11传感器的数据
Serial.print("DHT11 \t");
//读取DHT11传感器的数据
chk = DHT.read(DHT11_PIN);
switch(chk)
{
caseDHTLIB_OK:
Serial.print("OK,\t");
break;
caseDHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,\t");
break;
caseDHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,\t");
break;
Serial.print("Unknown error,\t");
break;
}
//串口显示温湿度值
Serial.print(DHT.humidity,1);
Serial.print("\t");
Serial.println(DHT.temperature,1);
//  lcd.setCursor(0,1);  //将闪烁的光标设置到column 0, line 1 (注释:从0开始数起,line 0是显示第一行,line 1是第二行。)
//  lcd.print(millis()/1000); //开机后屏幕现实以秒几时的时间
lcd.setCursor(0,0);
lcd.print("Humidity(%)");//在lcd第一行显示"Humidity(%)"
lcd.print(DHT.humidity,1);
lcd.setCursor(0,1);
lcd.print("Temperature(C)");//在lcd第二行显示"Temperature(C)"
lcd.print(DHT.temperature,1);
delay(1000);
}

好了!帖子写完!
查熊孩子期末考试成绩去了!


2017.01.14


创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(15)
songzfeng
songzfeng
点亮
李简文
李简文
谢谢楼主!我参考这篇教程也成功做出了一个温湿度计,效果不错。之后准备3d打印个美观点盒子把它装起来~
gada888
gada888
学习了。
390880244
390880244
学习学习,谢谢楼主
zhouyu77642017
zhouyu77642017
good good
townyee
townyee
如果是楼主的儿子玩arduino
推荐你给他用 Linkboy这个软件
不需要底层编程
软件就可以搭建模块,然后简单逻辑设计,仿真
就可以做出漂亮的简单的项目了
kimi423520
kimi423520
太好啦, 刚好有需求要做类似的, 感谢
pATAq
pATAq
支持一下!
温湿度采样用的什么?
想要用echarts库搞个网页版的图表
作为小白都是用现成的i2c lcd,这个占用接口太多啦
1973742214
1973742214
1973742214
1973742214
天,你必须和我加好友,画画的太好了!!amazing
学习学习
DFSysmAH3nf
DFSysmAH3nf
有些东西还是不懂 能否加个好友聊
willwii3373
willwii3373
哈哈 最后用frizing画个原理图就完美了
Ash1
Ash1
给无限的自学能力点个赞! 字不错哈哈
Ace
Ace
字不错,哈哈
hnyzcj
hnyzcj
字写的不错,算是亮点。
20060606
20060606回复hnyzcj
哈哈哈哈哈哈哈哈哈哈,有道理
乱云飞渡
乱云飞渡回复hnyzcj
图表是随时自动生成的吗?怎么做到的?
还是粘贴后处理的?
共9条回复,已加载2条,点击查看更多共9条回复,已加载全部
- 没有更多了 -