Arduinowilliam hill官网
直播中

Dr_Frankenstein

6年用户 4经验值
擅长:嵌入式技术
私信 关注
[讨论]

请教:esp32中用u8g2显示shtc3传感器数据到i2c液晶屏,显示不稳定的问题

如题,单独测试SHTC3或液晶屏都没问题,放在一起后,只是在上电时获取一组数据,之后就不动了(偶尔采集两三组,然后不动了,排除接触等潜在问题)。

可能是什么原因?望不吝赐教。

#include <U8g2lib.h>

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif

#include "Adafruit_SHTC3.h"

Adafruit_SHTC3 shtc3 = Adafruit_SHTC3();
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);   // All Boards without Reset of the Display

void setup() {
Serial.begin(115200);

while (!Serial)
delay(10);     // will pause Zero, Leonardo, etc until serial console opens

Serial.println("SHTC3 test");
if (! shtc3.begin()) {
Serial.println("Couldn't find SHTC3");
while (1) delay(1);
}
Serial.println("Found SHTC3 sensor");

u8g2.begin();

//u8g2.enableUTF8Print();
}

void show_data(float temperature,float rh)
{
u8g2.setFont(u8g2_font_unifont_t_chinese2);
u8g2.setFontDirection(0);
u8g2.clearBuffer();

u8g2.setCursor(10, 15);
u8g2.print("T:");u8g2.print(temperature);
u8g2.setCursor(10, 40);
u8g2.print("RH:");u8g2.print(rh);

u8g2.sendBuffer();
}

void loop() {
sensors_event_t humidity, temp;

shtc3.getEvent(&humidity, &temp);// populate temp and humidity objects with fresh data
Serial.print("T: "); Serial.print(temp.temperature); Serial.print(" degrees C,");
Serial.print("RH: "); Serial.print(humidity.relative_humidity); Serial.println("% rH");

unsigned long t1 = millis();
show_data(temp.temperature,humidity.relative_humidity);
unsigned long t2 = millis();
Serial.print("dT:");Serial.println(t2-t1);
delay(500);

}

回帖(1)

Dr_Frankenstein

2023-6-24 00:58:48
已解决,shtc3.getEvent中执行完毕设置了sleep,再次调用却不会唤醒shtc3,调用前需要先唤醒shtc3
举报

更多回帖

发帖
×
20
完善资料,
赚取积分