第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度

news/2024/11/25 18:29:03/

今天给大家介绍一块嵌入式毕设中也经常用到的一款传感器——BH1750光照传感器,如下图。(该传感器的购买链接和代码我已放在资料里,想要资料的同学,评论区留下邮箱即可)相比光敏传感器,它可以直接输出环境光照强度的数值(范围是0~65535lx),非常适合懒人党,各位的传感器买到手后,赶紧跟着文章试试吧!

 首先,BH1750光照传感器上有5根引脚,分别是连接3.3V的VCC、接地的GND、连接IIC时钟线的SCL引脚,连接IIC数据线的SDA引脚和ADDR引脚。关于ADDR引脚,我们可以不用管它。拿到BH1750传感器模块后,按照资料提供的接线图(下图)用杜邦线将STM32、BH1750和USB转TTL模块连接起来,再通过烧录器将下面的例程代码烧录进STM32即可看到效果(USB转TTL要连接电脑)。

 接下来讲解BH1750的STM32例程代码程序。
 

 第11行 delay_init( ) 初始化延时函数,执行这条语句后,延时效果才会准确。 

第13行 NVIC_PriorityGroupConfig( )是设置中断优先级分组。

第15行 USART_Config( ) 初始化串口1函数,该串口用来打印光照强度值。资料提供的程序用的串口1来打印,到时大家根据自身需要,在uart.h文件里面打开对应的串口注释就可以使用对应的串口了。

第17行 BH1750_Init( ) 初始化光照传感器模块。里面初始化了A6和PA7引脚来进行IIC通讯,和发送上电指令给BH1750传感器。

第19~20行 BH1750_Data_Send( )的作用是将括号里的数据通过IIC方式发送给BH1750传感器模块,BH1750传感器接收到数据后就会去执行相关操作。
比如第19行的BH1750_Data_Send(0x07)是让BH1750传感器内部存储光照数值的寄存器的值重置为默认值。BH1750_Data_Send(0x10)是设置BH1750传感器工作在高精度测量模式。

第22行 delay_ms(180) 延时180ms,等待模块准备完成并开始测量。以上,我们就设置好了BH1750传感器模块的工作模式,到时候程序运行完第17~20行这段代码就会按照我们设置的模式开始工作,剩下的就是在while(1)里调用第26行的 BH1750_Data_Read( ) 进行读取光照值数据即可。

第26行 是获取真实的光照轻度值,BH1750_Data_Read( )函数会返回BH1750传感器检测到的光照值,然后除以1.2得到的就是真实的光照强度值了。

第27行 串口1打印真实的光照强度值—LIGHTstreng,其中" %8.2f "的作用是让输出的数据保留两位小数。

实现效果如下:

串口助手显示BH1750光照值

在上面我们已经学会了使用BH1750模块测量周围环境的光照强度并进行光强的数值打印。接下来我们结合第七章(STM32+OLED+DHT11)的代码,实现OLED上显示光照强度值

首先打开BH1750的工程文件和第七章的工程文件,因为BH1750与STM32之间是通过I2C进行通讯的,所以我们把I2C驱动源码文件移植到第七章的工程文件中,按下图操作。

移植完I2C驱动源码文件后,我们就可以将包含STM32与BH1750通讯的函数代码文件也移植过来。由于BH1750的代码工程已将这部分内容都整合在上面移植的BH1750文件内了,所以文件方面的移植只要完成上图的操作就可以了。

接下来打开第七章的代码,进行下图操作,将包含I2C驱动源码和STM32与BH1750通讯的函数代码C文件添加进工程中。

在弹出的窗口进行下图操作。

所需的C文件添加进来后,再将移植过来的BH1750文件添加到编译路径。具体操作如下:

1.点击图中红色框的“魔法棒”图标。

 2.点击“魔法棒”后会弹出下图中的窗口,先点击窗口顶部的 C/C++ (图中1号标位置),然后点击图中2号标位置。

 3.完成2的步骤后,会弹出下图中的窗口,先点击1号标的位置,会弹出下面蓝色区域的长条框,长条框里面就可以添加我们要新的编译路径。怎么添加呢?我们点击长条框右侧的地方(2号标位置),找到刚从BH1750工程文件移植过来的BH1750文件即可。

 4.如下图所示就是将移植过来的BH1750文件添加到代码编译路径的结果图,然后点击OK推出就可以啦。

做完上图操作,我们就可以调用bh1750.c里面函数了。

1.首先在第七章代码的main.c开头添加bh750.h头文件(第1个箭头指示);

2.声明一个float类型变量lightvalue和两个uint32_t类型的变量lightV_HlightV_L(第2个箭头指示,变量lightvalue存储光照强度数值,变量lightV_HlightV_L分别用来存储光照强度数值的整数位和小数位);

3.然后再调用BH1750模块初始化函数、重置BH1750内部数据寄存器函数和设置其工作模式的函数让BH1750开始工作(第3个箭头指示);

4.4个红框的代码实现在OLED上显示”光照:lx”的字样;

5.5个红框的代码就是将BH1750获取到的光照值转换成光照强度值赋值并将光照强度值的整数和小数位分别复制给变量lightV_HlightV_L; 

6.然后再调用第6个框框的代码将光照强度值得整数位和小数位进行显示,到此就大功告成啦。

 

按照下面的接线图,用杜邦线将每个模块接到STM32上,然后将上面移植完成的代码烧录进STM32就可以看到效果了。

 实现效果如下:

STM32+OLED+BH1750显示光照值强度


http://www.ppmy.cn/news/877665.html

相关文章

C++ 文本文件处理

C 文本文件处理 文件流对象 #include <iostream>#include <fstream>#include <string>std::ifstream&#xff1a;用于从文件中读取数据的输入文件流类std::ofstream&#xff1a;用于向文件中写入数据的输出文件流类std::fstream&#xff1a;同时具有读写功…

《photoshopCS4中文版完全自学手册》视频教程

[转自]http://68ps.5d6d.com/thread-9518-1-4.html 《photoshopCS4中文版完全自学手册》视频教程是一本&#xff0c;能在短短一个星期&#xff0c;把你从一个不懂photoshop CS4变成photoshop CS4专家的级别的视频教程给你一只笔&#xff0c;你能成为毕加索么&#xff0c;不能&…

2018年计算机基础应用教程,全国计算机等级考试一级教程:计算机基础及Photoshop应用(2018年版)...

《全国计算机等级考试一级教程&#xff1a;计算机基础及Photoshop应用(2018年版)》是根据教育部考试中心颁布的《全国计算机等级考试一级Photoshop考试大纲(2018年版)》编写的&#xff0c;以AdobePhotoshopCS5为教学内容&#xff0c;主要内容包括&#xff1a;计算机基础知识&am…

《Adobe Photoshop CS5中文版经典教程(全彩版)》—第2课2.3节概述

本节书摘来自异步社区《Adobe Photoshop CS5中文版经典教程&#xff08;全彩版&#xff09;》一书中的第2课2.3节概述&#xff0c;作者【美】Adobe公司,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.3 概述Adobe Photoshop CS5中文版经典教程&#xff08;全彩版&a…

XP系统装PhotoShop的CS3版本

XP系统装PhotoShop的CS3版本&#xff0c;可用 XP系统装PhotoShop的CS版本 在XP系统下&#xff0c;装了一次PhotoShop的CS版本&#xff08;我这里装的是CS3&#xff09;&#xff0c;这里说一下经历。在网上查的说目前最新的PhotoShop版本已不再适配XP系统。Adobe宣称&#xff0…

Photoshop CS5完全自学实战实例视频教程

本套视频教程从最基础的PhotoshopCS5安装和使用方法开始讲起&#xff0c;以循序渐进的方式详细解读图像基本操作、选区、绘画与照片修饰、颜色与色调调整、CameraRAW、路径、文字、滤镜、外挂滤镜和插件、Web、动画、视频、3D等功能&#xff0c;深入剖析图层、蒙版和通道等软件…

photoshop cs6(mac版)安装教程

Adobe Photoshop CS6,是Adobe公司旗下最为出名的图像处理软件之一,集图像扫描、编辑修改、动画制作、图像制作、广告创意,图像输入与输出于一体的图形图像处理软件。2012年4月24日,Adobe发布了Photoshop CS6的正式版,在CS6中整合了其Adobe专有的Mercury图像引擎,并通过显…

Photoshopnbsp;CS4基础视频教程:通道与…

本套《Photoshop CS4基础视频教程》视频教程针对Photoshop的“通道”技术、图像创意、特效表现、商业设计等通过实例讲解的方式&#xff0c;让更多网友能轻松掌握PS的一些应用技法。下面内容是关于PS通道与抠图技术的基础和应用&#xff0c;通过理论与实践结合的讲解方式&#…