背景
基于前面的铺垫,能获取传感器的光强信息,能在屏幕上显示文字,把光强信息显示在屏幕上就很简单了。
任务拆解:
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