搜索
热搜: ROHM 模拟 车载
查看: 3452|回复: 7

[活动] 【DIY活动】+ OLED智能背光调节

  [复制链接]

该用户从未签到

72

主题

379

帖子

0

精华

金牌会员

最后登录
2020-8-3
发表于 2018-7-18 17:44:18 | 显示全部楼层 |阅读模式
本帖最后由 hbzjt2012 于 2018-7-19 13:13 编辑

       今天抽时间写了一下基于STM32核心板的OLED光强显示代码,同时用串口打印调试信息,OLED根据实时光照强度调节背光显示亮度。
(1)硬件组成与介绍
        硬件包括:STM32F103核心板   OLED12864   搭载BH1750的GY-30光强模块
微信图片_20180718172459.jpg
(2)此DIY方案中BH1750的功能
        BH1750用于实时采集周围环境光照强度,主控根据光强阈值和实时值比较进行OLED背光显示调节。
(3)软件流程介绍。
微信截图_20180718182335.png
微信截图_20180718174707.png
  1. int main(void)
  2. {
  3.         /* add your code here ^_^. */
  4.         SystemInit();
  5.         delay_init();
  6.         USART1_Init();
  7.         OLED_Init();
  8.         BH1750_Init();
  9.         LED_Init();
  10.         
  11.         PowerOn();
  12.         
  13.         while(1)
  14.         {
  15. ++tempCount;
  16.                
  17.                 //读取实时光照强度
  18.                 lightData = BH1750_ReadLux();
  19.                
  20.                 //OLED显示光照强度信息
  21.                 OLED_DisString(4u,0u,(uint8_t *)"ROHM BH1750 DIY");
  22.                 OLED_DisString(0u,3u,(uint8_t *)"Light:");
  23.                 OLED_DisNum(55u,3u,lightData,4,16,LineYes);
  24.                 OLED_DisString(100u,3u,(uint8_t *)"lux");
  25.                 OLED_DisString(0u,6u,(uint8_t *)"rohm.eefocus.com");
  26.                
  27.                 //根据实时光强调节OLED背光强度
  28.                 if(lightData > 0 && lightData < 30)
  29.                 {
  30.                         OLED_WR_Byte(0x81,WRcmd);//--set contrast control register
  31.                         OLED_WR_Byte(0xFF,WRcmd); // Set SEG Output Current Brightness
  32.                 }else if(lightData > 30 && lightData < 60)
  33.                 {
  34.                         OLED_WR_Byte(0x81,WRcmd);//--set contrast control register
  35.                         OLED_WR_Byte(0x8F,WRcmd); // Set SEG Output Current Brightness
  36.                 }else if(lightData > 60 && lightData < 90)
  37.                 {
  38.                         OLED_WR_Byte(0x81,WRcmd);//--set contrast control register
  39.                         OLED_WR_Byte(0x3F,WRcmd); // Set SEG Output Current Brightness
  40.                 }else if(lightData > 90 && lightData < 120)
  41.                 {
  42.                         OLED_WR_Byte(0x81,WRcmd);//--set contrast control register
  43.                         OLED_WR_Byte(0x0F,WRcmd); // Set SEG Output Current Brightness
  44.                 }
  45.                
  46.                 //串口打印调试信息
  47.                 if(tempCount == 3)
  48.                 {
  49.                         tempCount = 0;
  50.                         printf("hello world! Light={%6.2f}lux\r\n",lightData);        
  51.                         LED_Toggle();
  52.                 }

  53.         }

  54. }
复制代码

串口打印调试信息:
微信截图_20180718174555.png
实物与演示:
QQ图片20180718172757.gif
视频播放地址:OLED智能背光调节
回复

使用道具 举报

该用户从未签到

0

主题

1066

帖子

0

精华

论坛元老

最后登录
2023-12-19
发表于 2018-7-19 08:28:12 | 显示全部楼层
效率高啊。
回复

使用道具 举报

该用户从未签到

205

主题

1万

帖子

0

精华

论坛元老

最后登录
2023-6-10
发表于 2018-7-19 10:11:05 | 显示全部楼层
好东西啊,,
回复

使用道具 举报

该用户从未签到

2

主题

412

帖子

0

精华

金牌会员

最后登录
2021-10-27
发表于 2018-7-19 11:56:11 | 显示全部楼层
楼主动图怎么弄的呀
回复 支持 反对

使用道具 举报

该用户从未签到

72

主题

379

帖子

0

精华

金牌会员

最后登录
2020-8-3
 楼主| 发表于 2018-7-19 16:17:07 | 显示全部楼层
海迹天涯 发表于 2018-7-19 11:56
楼主动图怎么弄的呀

手机上下载个Gif生成器就行了
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

6

帖子

0

精华

新手上路

最后登录
2018-7-31
发表于 2018-7-26 19:00:41 | 显示全部楼层
这个可以
回复

使用道具 举报

该用户从未签到

1153

主题

5959

帖子

0

精华

论坛元老

最后登录
2021-2-19
发表于 2018-7-30 14:51:29 | 显示全部楼层
眼花缭乱啊
回复 支持 反对

使用道具 举报

该用户从未签到

1153

主题

5959

帖子

0

精华

论坛元老

最后登录
2021-2-19
发表于 2018-9-7 22:20:12 | 显示全部楼层
努力吧继续
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|罗姆半导体技术社区

GMT+8, 2024-4-19 12:14 , Processed in 0.113385 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表