生成Arduino上基于esp32实现DHT11传感器数据(D32连data)通过esp32显示在oled显示屏(D25连SDA,D26连SCL)上,并通过函数关系实现oled上显示DHT11实时温度的cpp代码
时间: 2024-03-23 19:39:58 浏览: 128
好的,我尝试为您提供一个基于esp32和DHT11传感器的温度监测系统的代码。
首先,您需要安装以下库:
1. Adafruit_Sensor.h
2. DHT.h
3. Adafruit_GFX.h
4. Adafruit_SSD1306.h
5. Wire.h
接下来是代码:
```
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Wire.h>
#define DHTPIN 32 // DHT11数据线连接到esp32的D32引脚
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
#define OLED_SDA 25 // OLED SDA连接到esp32的D25引脚
#define OLED_SCL 26 // OLED SCL连接到esp32的D26引脚
Adafruit_SSD1306 display(128, 64, &Wire, OLED_SDA, OLED_SCL);
void setup() {
Serial.begin(9600);
// 初始化DHT11传感器
dht.begin();
// 初始化OLED显示屏
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306初始化失败"));
for(;;);
}
// 清空屏幕
display.clearDisplay();
}
void loop() {
// 读取温度和湿度
float h = dht.readHumidity();
float t = dht.readTemperature();
// 如果无法读取到数据,则输出错误信息
if (isnan(h) || isnan(t)) {
Serial.println(F("无法读取DHT11传感器数据"));
return;
}
// 将温度数据显示在OLED屏幕上
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print("温度: ");
display.print(t);
display.println(" C");
display.display();
// 将温度数据输出到串口
Serial.print(F("湿度: "));
Serial.print(h);
Serial.print(F("%\t"));
Serial.print(F("温度: "));
Serial.print(t);
Serial.println(F("C"));
delay(2000);
}
```
在上述代码中,我们首先定义了DHT11传感器的数据引脚和类型。然后在setup()函数中初始化了DHT11传感器和OLED显示屏。在loop()函数中,我们读取温度和湿度数据,并将温度数据显示在OLED屏幕上。同时,也将温度数据输出到串口。
请注意,由于DHT11传感器的读取速度较慢,因此我们将读取数据的时间间隔设置为2秒。
希望这个代码可以对您有所帮助!
阅读全文