用arduino写一个dht11实时在SSD1306上显示温度、湿度的代码
时间: 2024-05-08 12:19:21 浏览: 173
好的,以下是对应的代码:
```c
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
#define SCREEN_WIDTH 128 // OLED屏幕宽度,单位像素
#define SCREEN_HEIGHT 32 // OLED屏幕高度,单位像素
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
#define DHTPIN 2 // DHT11连接的Arduino引脚
#define DHTTYPE DHT11 // DHT型号
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 OLED 初始化失败"));
for(;;);
}
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(0,0);
display.println("实时温湿度数据");
display.display();
delay(2000);
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println(F("在读取数据时发生错误"));
return;
}
Serial.print(F("湿度: "));
Serial.print(h);
Serial.print(F("% 温度: "));
Serial.print(t);
Serial.println(F("°C"));
display.clearDisplay();
display.setCursor(0,0);
display.print(F("湿度: "));
display.print(h);
display.println(F("%"));
display.print(F("温度: "));
display.print(t);
display.print(F(" °C"));
display.display();
}
```
希望对你有帮助!
阅读全文