ESP8266-Arduino编程实例-OLED显示DHT22传感器数据

OLED显示DHT22传感器数据

1、应用实例介绍

本次实例将演示如何在OLED中显示DHT22温度湿度传感器的数据。实例主要分两步来完成:

  1. DHT22传感器驱动,采集温度和湿度
  2. OLED驱动,显示采集到的温度值和湿度值。

在前面的文章中,对OLED的应用和驱动做了介绍,请参考:

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • DS18B20传感器模块一个
  • OLED(SSD1306)模块一个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线如下:

在这里插入图片描述

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:

ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:

4、代码实现

本次实例使用到如下驱动库:

DHT22驱动库:

OLED驱动库:

1)导入依赖库头文件

1
2
3
4
5
6
7
8
9
10
11
#include "DHT.h"
#include <Wire.h>
#include <SFE\_MicroOLED.h>

#define DHTPIN D3
#define DHTTYPE DHT22


MicroOLED oled;
DHT dht(DHTPIN, DHTTYPE);

2)初始化设备

1
2
3
4
5
6
7
8
9
10
11
12
void setup() 
{
// 串口初始化
Serial.begin(9600);
// DHT11初始化
dht.begin();
// OLED初始化
oled.begin();
oled.clear(ALL); // 清屏
oled.display();
}

3)数据采集与显示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
void loop() 
{
// Wait a few seconds between measurements.
delay(2000);

float h = dht.readHumidity();
float t = dht.readTemperature();

// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t))
{
Serial.println("Failed to read from DHT sensor!");
return;
}
oled.clear(PAGE);
oled.setFontType(0); // set font type 0, please see declaration in SFE\_MicroOLED.cpp
oled.setCursor(1, 3);
oled.print("Humidity: ");
oled.setCursor(1, 12);
oled.print(h);
oled.print(" %\t");
oled.setCursor(1, 21);
oled.print("Temp :");
oled.setCursor(1, 30);
oled.print(t);
oled.print(" \*C ");
oled.display();
}

文章来源: https://iotsmart.blog.csdn.net/article/details/127712389