11646浏览
查看: 11646|回复: 2

[进阶] 温度计简单教程,简单到令人发指,dth11,1602

[复制链接]
温度计简单教程,简单到令人发指,dth11,1602

经过不懈的努力,花了N多的时间,终于把dth11温湿度传感器,Arduino uno,1802显示,完成了,现在把其中辛苦纵然大家分享,我遇到的困难,大家也遇到,希望大家少走弯路。

前提:
如果看官真的是从零开始,建议买个DF的初级套装,然后再买个dth11温湿度传感器,一个带IIC总线的1602,后两个请自行某宝,因为DF的有点贵。然后做个温湿度计,算是对这一阶段学习的考试。
带IIC总线!!!
带IIC总线!!!
带IIC总线!!!
重要的事计三遍,我就是随随便便买了个1602,不带总线,然后接线烦了我三天,我们目的是学习,不是给自己找罪受。

温度计简单教程,简单到令人发指,dth11,1602图1

此1602没带IIC总线,,接线一堆

DTH11
我用的是4号端口
温湿度传感器,记住,在arduino,你每一个零件,都要带arduino IDE编程器认识的库文件。也就是说,要有“dth11”,这一个库,然后你才能在程序中用到。提供库的下载地址,请自行下载,然后自己把这个库文件放在” C:\Program Files\Arduino\libraries”
库下载,请打开这个页面,下拉,有下载地址。
https://wiki.dfrobot.com.cn/_SKU_DFR0067_DHT11%E6%95%B0%E5%AD%97%E6%B8%A9%E6%B9%BF%E5%BA%A6%E4%BC%A0%E6%84%9F%E5%99%A8V2
温度计简单教程,简单到令人发指,dth11,1602图5
arduino uno
最普通的版本,我的是山寨版,十来元的

1602显示屏
推荐带iic总线的,然后请翻看这个教程,然后本教程后面就不需要看了。
https://mc.dfrobot.com.cn/thread-13576-1-1.html
项目九 实时温湿度检测器
带iic总线的,后面有一块小板,然后装线简单很多。
温度计简单教程,简单到令人发指,dth11,1602图4
本教程说的是不带iic总线的。
1602屏的库IDE自带,不需要自己去找。

10K可调电阻
购买零件的时候记得带一个,IIC总线自带

杜邦线
杜邦线的头有的是针,有的是孔。我们使用了面包板,所以以双头针为主,大约6针孔。DF套件有。

面包板,
随意,我用DF套件里的。

温度计简单教程,简单到令人发指,dth11,1602图2
Arduino IDE  编程器
Arduino IDE  编程器的版本很多,各个版本之间不完全兼容,我用的是1.0.6,不要贪心,如果运行不了,请下载1.0.6,与本教程作者保持一致。

温度计简单教程,简单到令人发指,dth11,1602图3
avr-g++: error:
avr-g++: error: CreateProcess: No such file or directory
Arduino IDE  编程器,我用的是1.0.6,不要贪心,如果运行不了,请下载1.0.6,与本教程作者保持一致。

"LiquidCrystal.h" 对应多个库
原来用的是1.6.12,各种问题,然后下载1.0.6,与本教程作者保持一致。

exit status 1
Arduino:1.6.12 (Windows XP), 开发板:"Arduino/Genuino Uno"
avr-g++: error: CreateProcess: No such file or directory
exit status 1
为开发板 Arduino/Genuino Uno 编译时出错。

请下载1.0.6,与本教程作者保持一致。

接线。

#include <LiquidCrystal.h>
此语句的意思是加载液晶显示屏的库

LiquidCrystal lcd(10,9,7,6,5,8);  //定义显示屏接脚位
此语句的意思是液晶显示屏将使用10,9,7,6,5,8,这六个中断口,其中10号,9号,是控制线,也就是说传输“我要写”之类的握手信号。  7,6,5,8,是数据传输口。所以,接线的时候,
LCD     
1,GND
2,VCC,5V
3,电位器中
4,arduino 10
5,GND
6,arduino  9
7,D0,空
8,D1,空
9,D2,空
10,D3,空
11,D4  arduino  7
12,D5  arduino  6
13,D6  arduino  5
14,D7  arduino  8
15,A,VCC,5V
16,K,GND

电位器可选10K—47K的可调电阻,两端请接正负。
Dth11,有三根线,正负,信号线用4号口。

*/++++++++++++++++++++++++++++++++++++++++

最后贴上我的程序,祝大家玩得愉快。

#include <LiquidCrystal.h>

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);
}


++++++++++++++++++

最后,祝大家玩得愉快。




hnyzcj  版主

发表于 2018-5-29 12:20:01

我觉得也不简单呀,哈哈哈哈
回复

使用道具 举报

pATAq  版主

发表于 2018-5-29 13:33:23

支持一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail