让您的Arduino了解温度和湿度为您的Arduino项目添加了一些真实世界的使用案例,因此在本教程中,我们将重点介绍在我们的项目中使用Arduino温度传感器!我们将特别关注Adafruit DHT11和DHT22温度和湿度传感器。
由于我们将在上一个项目的基础上进行构建,我们强烈建议您阅读我们的教程使用带有Arduino的液晶显示器第一我们将使用LCD显示屏显示当前温度。我们将包括代码示例,以显示串行控制台的温度,以防您手边没有LCD。
Arduino温度传感器零件清单
如果您刚刚开始或只是想要一份简单的零件清单,我们为您提供了一份简单的购物清单:
注意:您只需要订购DHT11或DHT22,而不是两者都订购。DHT22可以检测到更宽的温度范围(远低于冰点),但代价是价格更昂贵,尺寸更大。DHT11是大多数人开始使用的。
使用Arduino温度传感器
使用DHT11温度传感器非常简单。让我们先检查一下接线。记住,这是我们LCD显示项目的一个附加组件,所以我们只在这个DHT11接线图上显示额外的连接。
你完成的温度传感器现在看起来应该像这样:
温度传感器的Arduino草图变化
在我们的LCD上使用arduino温度传感器非常简单。我们只需要添加几行代码并安装一些可能尚未安装的库。
安装DHT11/DHT22 Arduino库
第一件事。我们需要在Arduino IDE中安装两个库:1)Adafruit DHT传感器库,2)Adafruit统一传感器库。您必须同时安装这两个函数,因为DHT库从统一库调用函数。
如果按“传感器”筛选,Adafruit统一传感器库是列表中的最后一个库。
将DHT11代码添加到草图中
现在终于到了修改代码的时候了,这样我们就可以在LCD屏幕上显示温度了。以下是完整的代码:
//使用DHTTYPE DHT11 //将DHT22改为DHT22 //使用接口引脚编号LiquidCrystal lcd(12, 11, 5, 4, 3, 2)初始化库;//定义我们的DHT对象使用pin和类型从上面的DHT DHT (DHTPIN, DHTTYPE);void setup(){//设置LCD的列和行数:开始(16日2);//打印消息到LCD。液晶显示器。打印(“目前临时:”);} void loop(){//将光标设置为第0列,第1行lcd。setCursor (0,1);//创建一个浮点数并读取温度传感器浮点数myTemperature = dht.readTemperature(true);//在摄氏液晶屏幕上打印温度。print(myTemperature);lcd.print((223字符)); // degree symbol lcd.print("C"); delay(500); // wait half a second before updating again. }
我们添加了DHT代码,将“Geek Pub!”更改为“Current manbext登录页Temp:”,并使用look来显示温度,而不是计算运行的秒数。非常简单。
如果所有连接都正确,则屏幕应如下所示“”
了解DHT11 / DH22代码
如果您在项目中使用Arduino温度传感器,了解代码的基础知识是很重要的。让我们看看我们添加了什么。我们必须做的第一件事是包含DHT库。
#包括“DHT.h”
下一位是定义引脚和DHT类型(11或22)。
#define DHTPIN 7 //我们正在使用pin 7 #define DHTTYPE DHT11 //改变到DHT22如果你正在使用DHT22
最后,我们需要创建DHT对象。就我而言,我只是叫它“dht”。我有时很无聊。
DHT DHT (DHTPIN DHTTYPE);
要从DHT11/22读取温度或湿度,只需调用一个简单的函数。温度或湿度将存储在变量myTemperature和myHumidty中。
float myTemperature=dht.readTemperature(真);浮动湿度=dht.Read湿度(真);
如果没有LCD字符显示器
如果你没有和LCD屏幕,你总是可以写这些变量的输出到串行控制台如下:
序列号。开始(9600);//启动串口serial.println(“当前温度:”);串行打印LN(myTemperature);Serial.println((char)223);//学位符号序列。打印号(“C”);
请务必在下面留下关于温度传感器项目结果的评论!
是否可以将代码中的温度从C更改为F。我在德克萨斯州的温度计都是F。
谢谢。
我有一篇关于在Arduino上将摄氏度转换为华氏度.
谢谢。似乎Arduino的所有东西都是公制的。
Ictexas;这是样品;
//将温度读取为摄氏度(默认值)
float t = dht.readTemperature();
//读取温度为华氏(isFahrenheit = true)
float f = dht.readTemperature(true);