这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 编程获取BH1750光强度数值

共5条 1/1 1 跳转至

编程获取BH1750光强度数值

菜鸟
2024-11-09 11:52:01     打赏

背景

此次活动购买的 U136 模块是一个环境光传感器,罗姆半导体设计的BH1750FVI是一款用于I2C总线接口的数字环境光传感器IC。该IC最适合用于调整移动电话LCD和键盘背光功率所需的环境光数据获取。它可以以高分辨率检测宽范围内的光照强度(1~65535lx).


特点

1. I2C 总线接口:支持快速/标准模式。

2. 光谱响应接近人眼反应。

3. 照度转数字转换器。

4. 宽范围高分辨率:1 - 65535 lx。

5. 通过功耗功能实现低电流消耗。

6. 50Hz / 60Hz 光噪声抑制功能。

7. 1.8V 逻辑输入接口。

8. 无需外部组件。

9. 光源依赖性小:如白炽灯、荧光灯、卤素灯、白色LED、阳光等。

10. 可选择两种类型的I2C从地址。

11. 可调测量结果以适应光学窗口的影响:使用此功能可检测最小0.11 lx,最大100000 lx。

12. 测量变化小(±20%)。

13. 红外影响很小。


应用

移动电话

LCD电视

笔记本电脑

便携式游戏机

数码相机

数码摄像机

车载导航系统

PDA

LCD显示器


绝对最大额定值

供电电压:最高4.5V

工作温度:-40°C 至 85°C

存储温度:-40°C 至 100°C

SDA 拉电流:最大7mA

功率耗散:260mW(注:70mm × 70mm × 1.6mm 玻璃环氧板,在Ta > 25°C时降额为3.47mW/℃)


工作条件

VCC电压:2.4V 至 3.6V

I2C参考电压:1.65V 至 VCC


Arduino 库 BH1750

编程环境为 VSCode + PlatformIO IDE。打开工程,在 PIO Home 中打开 Libraries 搜索 BH1750 然后安装到对应的工程即可。


Pasted image 20241109112852-add-bh1750-library.png


程序设计

我的代码模块话设计,解耦了各个模块,因此只需要实现模块初始化和处理函数,然后在 setup() 和 loop() 函数分别调用以下两个函数接口。


/* Includes --------------------------------------------------------------------------------------*/
#include <Wire.h>
#include <BH1750.h>
#include "dlight_bh1750.h"
/* Constants -------------------------------------------------------------------------------------*/
#define BH1750_I2C_ADDR       0x23
/* Variables -------------------------------------------------------------------------------------*/
BH1750 lightmeter(BH1750_I2C_ADDR); /* 构造对象 */
/* Function Implementations ----------------------------------------------------------------------*/
/**
 * @brief BH1750 环境光传感器初始化
 *
 * @return int 0 on success; -1 on error.
 */
int dlight_bh1750_init(void)
{
int retval = 0;
Wire.begin();
if (lightmeter.begin(BH1750::CONTINUOUS_HIGH_RES_MODE)) {
Serial.println(F("BH1750 Advanced begin"));
} else {
Serial.println(F("Error: BH1750 init"));
retval = -1;
}
return retval;
}
/**
 * @brief BH1750 测光
 *
 * @return float 返回测光结果 lux 为档位;失败返回0.0
 */
float dlight_bh1750_process(void)
{
float lux = 0.0;
if (lightmeter.measurementReady()) {
lux = lightmeter.readLightLevel();
Serial.print(">lux: ");
Serial.println(lux);
}
return lux;
}



演示

办公室环境比较暗,手机开了手电筒在旁边晃悠,光照强度变化明显。


eepw-diy-s3-bh1750-lux.gif


IMG_20241109_114217[1].jpg

eepw-diy-s3-光照强度获取.zip




关键词: BH1750     arduino     esp32s3    

院士
2024-11-09 16:49:54     打赏
2楼

学习并收藏了,谢谢分享。


专家
2024-11-09 22:28:29     打赏
3楼

感谢分享


专家
2024-11-09 22:44:48     打赏
4楼

感谢分享


菜鸟
2024-11-10 08:28:29     打赏
5楼

感谢分享!学习学习。


共5条 1/1 1 跳转至

回复

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