背景
基于前面的铺垫,能获取传感器的光强信息,能在屏幕上显示文字,把光强信息显示在屏幕上就很简单了。
任务拆解:
1. 初始化屏幕,初始化BH1750传感器;
2. 获取光强信息,如果获取成功,就显示在屏幕上;
setup 初始化
void setup()
{
Serial.begin(115200);
uint32_t wait_cnt = 5;
while (!Serial && (wait_cnt-- > 0)) { /* 等待串口软件连接 */
delay(1000);
}
// delay(3000);
Serial.println("Adafruit Feather ESP32-S3 TFT");
Serial.println("Build: " + String(__DATE__) + " " + String(__TIME__));
screen_init();
btn_init();
led_init();
battery_monitor_init();
dlight_bh1750_init();
delay(10);
}其中 screen_init() 函数之前讲过,初始化屏幕,这里略过。dlight_bh1750_init() 就是测光传感器 BH1750 初始化,也在之前讲过,这里就不贴代码了。
loop 获取光强信息并显示在屏幕上
在死循环中每隔一段时间就获取一次传感器数值,如果获取成功,就在屏幕上显示,代码很简单,如下所示。
void loop()
{
// btn_process();
float temp_lux = 0.0;
if (dlight_bh1750_scan(&temp_lux)) {
g_lux = temp_lux;
Serial.println("g_lux = " + String(g_lux));
/* 此处显示光照强度 */
canvas.fillScreen(ST77XX_BLACK);
canvas.setCursor(0, 25);
canvas.setTextColor(ST77XX_WHITE);
canvas.print("Light: ");
canvas.setTextColor(ST77XX_YELLOW);
canvas.print(String(g_lux));
canvas.setTextColor(ST77XX_WHITE);
canvas.println(" lux");
display.drawRGBBitmap(0, 0, canvas.getBuffer(), LCD_WIDTH, LCD_HEIGHT);
}
loop_cnt++;
delay(10);
}运行

视频见B站:
https://www.bilibili.com/video/BV1BWSFYcEzi/?vd_source=8f2bbf56b70c541bec2ea0b9f102ebee
我要赚赏金
