ESP32 Arduino 开发 DHT11传感器

发布时间 2024-01-05 09:26:54作者: 霍北北

ESP32 Arduino开发 DHT11传感器

参考:CSDN博客

1. 安装程序库

  1. 打开库管理工具

工具 -> 管理库...

  1. 查找所需要的程序库
    安装DHT sensor library

2. 编写相关程序

2.1. 引入头文件

#include <DHT.h>
#include <DHT_U.h>

2.2. 创建DHT对象

DHT对象创建的函数需要两个参数,一个是用于获取数据的引脚号,一个是传感器的类型(可选DHT11、DHT21、DHT22)。
所以在创建对象之前,通过宏定义的方式对于所需要的两个参数进行定义。

#define DHTPIN 4           // 设置获取数据的引脚
#define DHTTYPE DHT11      // 选择DHT11

DHT dht(DHTPIN, DHTTYPE);  // 创建一个DHT对象

2.3. 传感器初始化

在setup()函数中调用DHT对象的begin函数进行初始化

void setup() {
   dht.begin();           // 初始化DHT11
}

2.4. 读取传感器数据

// 读取传感器数据
float h = dht.readHumidity();       // 读取湿度
float t = dht.readTemperature();    // 读取温度

// 判断数据是否成功读取
if (isnan(h) || isnan(t)) { 
    Serial.println("DHT11数据读取失败");         
    return;
}

// 串口打印
Serial.print ("湿度: ");
Serial.print (h);
Serial.print ("% | ");
Serial.print ("温度度: ");
Serial.print (t);
Serial.println ("℃");

3. 完整的代码例程

#include <DHT.h>
#include <DHT_U.h>

#define DHTPIN  4 
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  dht.begin(); // 初始化DHT11
}

void loop() {
  // 暂停2秒,读取数据官方说明需要250毫秒
  delay(2000); 

  // 读取传感器数据
  float h = dht.readHumidity();       // 读取湿度
  float t = dht.readTemperature();    // 读取温度

  // 判断数据是否成功读取
  if (isnan(h) || isnan(t)) { 
      Serial.println("DHT11数据读取失败");         
      return;
  }

  // 串口打印
  Serial.print ("湿度: ");
  Serial.print (h);
  Serial.print ("% | ");
  Serial.print ("温度度: ");
  Serial.print (t);
  Serial.println ("℃");
}