如何在Arduino上编写读取DHT11并显示在OLED的完整代码示例?
时间: 2024-09-14 11:03:46 浏览: 50
attiny85使用arduino在SSD1306上显示dht11的温湿度和锂电池的电量
在Arduino上编写读取DHT11并显示在1.12寸OLED屏幕的完整代码示例涉及以下几个步骤:
首先,你需要确保已经安装了以下库:
- `Adafruit_DHT` 或者 `DHTLib` 库用于处理DHT11传感器的数据交互。
- `Adafruit_SSD1306` 或 `FastOLED` 库用于OLED屏幕的控制。
以下是使用`Adafruit_SSD1306`库的一个基础示例:
```cpp
#include <Adafruit_SSD1306.h>
#include <DHT.h>
// 定义DHT11的引脚和OLED屏幕的相关引脚
#define DHT_PIN A0
#define OLED_I2C_ADDR 0x3C // 1.12寸OLED的默认地址,可能会有所不同
Adafruit_SSD1306 oled(128, 64); // 创建128x64像素的屏幕实例
DHT dht(DHT11, DHT_PIN);
void setup() {
Serial.begin(9600);
// 初始化OLED屏幕
oled.begin();
oled.clear();
oled.display();
// 等待DHT稳定
delay(1000);
}
void loop() {
float humidity, temperature;
// 从DHT11获取数据,可能会有延时
int ret = dht.readhumidity(&humidity, &temperature);
if (ret == DHT_OK) {
// 温度和湿度数据显示
char tempStr[7];
dtof(tempStr, temperature);
char humiStr[7];
dtof(humiStr, humidity);
oled.setCursor(0, 0);
oled.println("Temperature: " + String(tempStr) + " C");
oled.setCursor(0, 10);
oled.println("Humidity: " + String(humiStr) + "%");
oled.display(); // 更新屏幕
} else {
Serial.println("Failed to read from DHT sensor!");
}
}
```
请注意,实际的代码可能需要调整以适应你所使用的特定硬件和库版本。在运行此代码前,请检查连接、库的导入以及所有引脚设置。
阅读全文