1422|1

235

帖子

5

TA的资源

纯净的硅(初级)

 

【平头哥RVB2601创意应用开发】OLED显示温湿度 [复制链接]

 

上篇我们测试了下使用SHT20读取温湿度,目前使用了串口输出,正好板子上有一块OLED显示屏幕,正好本次就测试下使用OLED屏幕显示读取到的温湿度值。

void oled_init()

{

    oled_pinmux_init();

    oled_gpio_init();

    oled_initialize();



    // lv_disp porting

    /*Create a display buffer*/

    lv_disp_buf_init(&disp_buf1, buf1, buf2, 64 * 128);



    /*Create a display*/

    lv_disp_drv_t disp_drv;

    lv_disp_drv_init(&disp_drv); /*Basic initialization*/

    disp_drv.buffer   = &disp_buf1;

    disp_drv.flush_cb = oled_flush;

    disp_drv.rotated  = 0;

    lv_disp_drv_register(&disp_drv);

      

      

}

我们本次就是用LVGL库进行操作我们的OLED显示屏幕。初始化我们的LVGL是在我们的oled_init函数中的。主要是初始化一个缓冲区给LVGL。

image-20220406213940-1.png  

任务函数中添加上我们的GUI任务。

image-20220406213940-2.png  

之后主要就是创建我们的LVGL中的label。也就是我们要显示的字符。  

  guider_ui.p1 = lv_label_create(lv_scr_act(), NULL);

    lv_label_set_long_mode(guider_ui.p1, LV_LABEL_LONG_BREAK);

    lv_label_set_align(guider_ui.p1, LV_LABEL_ALIGN_CENTER);

    lv_obj_set_pos(guider_ui.p1, 0, 34);

    lv_obj_set_size(guider_ui.p1, 60, 10);

    lv_label_set_text(guider_ui.p1, "HUMI:");

      

       guider_ui.humi = lv_label_create(lv_scr_act(), NULL);

    lv_label_set_long_mode(guider_ui.humi, LV_LABEL_LONG_BREAK);

    lv_label_set_align(guider_ui.humi, LV_LABEL_ALIGN_CENTER);

    lv_obj_set_pos(guider_ui.humi, 64, 34);

    lv_obj_set_size(guider_ui.humi, 60, 10);

    lv_label_set_text(guider_ui.humi, "100%");

      

       guider_ui.p2 = lv_label_create(lv_scr_act(), NULL);

    lv_label_set_long_mode(guider_ui.p2, LV_LABEL_LONG_BREAK);

    lv_label_set_align(guider_ui.p2, LV_LABEL_ALIGN_CENTER);

    lv_obj_set_pos(guider_ui.p2, 0, 4);

    lv_obj_set_size(guider_ui.p2, 60, 10);

    lv_label_set_text(guider_ui.p2, "TEMP:");

      

       guider_ui.temp = lv_label_create(lv_scr_act(), NULL);

    lv_label_set_long_mode(guider_ui.temp, LV_LABEL_LONG_BREAK);

    lv_label_set_align(guider_ui.temp, LV_LABEL_ALIGN_CENTER);

    lv_obj_set_pos(guider_ui.temp, 64, 4);

    lv_obj_set_size(guider_ui.temp, 60, 10);

lv_label_set_text(guider_ui.temp, "30C");

一共是添加了4个。两个用来标识温度还是湿度的。两个是我们显示的数值。

void set_label_temp_value(uint16_t value)

{

       lv_label_set_text_fmt(guider_ui.temp, "%d.%d C",value/10,value%10);     

      

}



void set_label_humi_value(uint16_t value)

{

       lv_label_set_text_fmt(guider_ui.humi, "%d.%d %%",value/10,value%10);

      

}

之后就是两个刷新label的函数,通过读取温湿度传感器之后,修改相应的label数值。

最终效果如下:

image-20220406213940-3.jpeg  

图片1.gif
 

 

最新回复

用LVGL库进行操作屏幕楼主有什么感受   详情 回复 发表于 2022-4-7 07:29
 
 
 

回复
举报

5948

帖子

0

TA的资源

五彩晶圆(高级)

 

用LVGL库进行操作屏幕楼主有什么感受

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表