最近在折腾墨水屏,但是也不是专业自动化的,就东拼西凑了一堆代码天气日期什么都挺好就是室内温度死活显示不出
用的是arduino,然后板子是网上打样的8266板,温湿度是dht11
然后显示用的是u8g2
这是代码
#include "DHT.h"
#include <U8g2lib.h>
#define DHTPIN 13 //与ESP8266的D1相连
#define DHTTYPE DHT11 // DHT 11
U8G2_IL3820_V2_296X128_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 14, /* data=*/ 13, /* cs=*/ 15, /* dc=*/ 0, /* reset=*/ 2); // ePaper Display, lesser flickering and faster speed, enable 16 bit mode for this display!
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println(F("DHTxx test!"));
u8g2.begin();
u8g2.enableUTF8Print(); //使print支持UTF8字集
dht.begin();
u8g2.clearDisplay(); // 清除显示数据及屏幕
u8g2.clearBuffer();
delay(1000);
}
void loop() {
//在两次测量之间等待几秒钟
// 读取温度或湿度大约需要250毫秒!
// 传感器读数也可能长达2秒“旧”(这是一个非常慢的传感器)
float h = dht.readHumidity();
// 读取温度为摄氏温度(默认值)
float t = dht.readTemperature();
// 检查是否有任何读取失败并提早退出(重试)。
if (isnan(h) || isnan(t) ) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
int tem = (int) t;
int hum = (int) h;
String temperatureStr = String(tem).substring(0, 2);
String humidityStr = String(hum).substring(0, 2);
Serial.println(h);
Serial.println(t);
Serial.println(temperatureStr);
Serial.println(humidityStr);
u8g2.clearDisplay(); // 清除显示数据及屏幕
u8g2.clearBuffer();
delay(1000);
u8g2.setFont(u8g2_font_wqy15_t_gb2312);
u8g2.setCursor(105, 40);
u8g2.print(temperatureStr);
u8g2.setCursor(105, 117);
u8g2.print(humidityStr);
u8g2.setCursor(10, 117);
u8g2.sendBuffer();
delay(5000);
}
其他功能都正常,串口输出也都有,但是就是墨水屏显示不出
我也想过是不是io2口不行,换了好几个口都一样
我只留了测温的显示来测试的代码,每一步数据我都串口打印,都可以正常输出,但就是死活不刷新
而且在u8g2print的中间我插了几条文字输出的也一样,就是画面完全不刷新
但是只要去掉dht11的内容就一切正常
有朋友知道这是咋回事吗