这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » DIY-电子测光表-基础任务4--屏幕显示光强

共1条 1/1 1 跳转至

DIY-电子测光表-基础任务4--屏幕显示光强

菜鸟
2024-11-19 16:34:54     打赏

背景

基于前面的铺垫,能获取传感器的光强信息,能在屏幕上显示文字,把光强信息显示在屏幕上就很简单了。

任务拆解:

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);
}


运行


Pasted image 20241119155648-屏幕显示光强.png


视频见B站:

https://www.bilibili.com/video/BV1BWSFYcEzi/?vd_source=8f2bbf56b70c541bec2ea0b9f102ebee




共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]