当前位置: 首页 > news >正文

BH1750模块

 一,简介

 

BH1750通过I2C总线进行通信

BH1750指令集

 

 实践

 0100011 指的是0x23的一次L分辨率  0 是 I2C 写操作标志位  01000110 就是0x46

 I2C 总线完成 “起始→发地址(写)→应答→发模式指令→应答→停止” 的标准写流程,核心是向 BH1750 写入工作模式指令,为后续的光照度测量做准备。

void BH1750_WriteReg(u8 RegAddress)
{MyI2C_Start();MyI2C_SendByte(BHAddWrite);MyI2C_ReceiveAck();MyI2C_SendByte(BHModeH1);MyI2C_ReceiveAck();MyI2C_Stop();
}

 如果不先执行写操作,传感器处于未激活状态,内部无测量数据,读操作会返回无效值。

0100011指的是0x23的一次L分辨率 1 是 I2C 读操作标志位  01000111 就是0x47

  1. 调用写函数配置 BH1750 为高分辨率模式 1
  2. 延时 120ms 等待测量完成
  3. 发送 I2C 起始信号
  4. 发送 BH1750 读地址 (0x47) 并等待应答
  5. 读取高 8 位数据,发送应答 (0)
  6. 读取低 8 位数据,发送非应答 (1)
  7. 发送停止信号
  8. 拼接高低字节数据并返回
uint16_t BH1750_ReadReg(void)
{uint16_t Data;uint8_t DataH,DataL;BH1750_WriteReg(BHModeH1);Delay_ms(120);MyI2C_Start();MyI2C_SendByte(BHAddRead);//0x47MyI2C_ReceiveAck();DataH=MyI2C_ReceiveByte();MyI2C_SendAck(0);DataL=MyI2C_ReceiveByte();MyI2C_SendAck(1);MyI2C_Stop();Data=(DataH<<8)|DataL;return Data;
}

BH1750上电初始化

启动流程(从断电→通电→测量)

① 从「断电」→「通电」

  • 需通过 I²C 写指令(如代码里的 BH1750_WriteReg(BHPowOn) ),主动发送 “通电指令”,让传感器退出断电模式、进入通电待机。
  • 特殊情况:若直接发 “测量指令”,可*跳过单独通电步骤,传感器自动从断电切到通电*)

② 从「通电」→「测量」

传感器通电后,再发 I²C 写指令 选测量模式:

  • 一次测量:发指令(如 BHModeSingle ),传感器启动单次测量 → 测完自动回断电 / 通电待机(依指令定)。
  • 连续测量:发指令(如 BHModeH1 ),传感器持续测量,周期性更新数据,需主动发停止指令才退出。

状态切换逻辑

  • 断电 ↔ 通电:靠 I²C 写指令 触发,或被 “测量指令” 自动触发(跳过通电指令时)。
  • 通电 → 一次测量 / 连续测量:完全由 I²C 写指令 决定模式。
  • 测量结束(一次测量):自动回断电 / 通电(看指令);连续测量需主动停。
  1. 初始化 I2C 通信总线(MyI2C_Init()
  2. 发送上电指令(BHPowOn),唤醒传感器
  3. 发送复位指令(BHReset),清除内部寄存器状态
  4. 发送高分辨率模式 2 指令(BHModeH2),设置测量模式
void BH1750_Init(void)
{MyI2C_Init();BH1750_WriteReg(BHPowOn);BH1750_WriteReg(BHReset);BH1750_WriteReg(BHModeH2);}

http://www.dtcms.com/a/308273.html

相关文章:

  • 上证50期权2400是什么意思?
  • 常见中间件漏洞
  • 腾讯云edge
  • 【SpringMVC】拦截器,实现小型登录验证
  • 对于前端工程化的理解
  • 仓库管理系统-9-前端之Main主要区域的新增表单
  • 用AI一键生成可交互知识图谱:Knowledge Graph Generator 让信息可视化触手可及
  • 星云能量传送特效技术详解
  • 智能文本抽取技术:精准识别、定位并提取出关键信息
  • 05-netty基础-ByteBuf数据结构
  • cuda编程笔记(11)--学习cuBLAS的简单使用
  • 机械学习--逻辑回归
  • React组件化的封装
  • 内核寄存器操作mcu进入低功耗模式
  • Java 17 新特性解析与代码示例
  • JavaScript函数性能优化秘籍:基于V8引擎优化
  • YOLO+Pyqt一键打包成exe(可视化,以v5为例)
  • tomcat隐藏400报错信息
  • Augment Code与Cursor功能对比分析
  • BR/EDR PHY帧结构及其具体内容
  • Java高级用法之回调函数
  • PHP 核心特性全解析:从实战技巧到高级应用(2)
  • 财税企业经营管理秘籍(二):陌拜怎么做?
  • [Broken IOS] 配置CLI | 终端用户界面TUI
  • 如何利用 rowid 在OceanBase 中处理大表时提效
  • 【赵渝强老师】OceanBase租户的资源管理
  • TransportClient详细说一说
  • UI测试平台TestComplete如何实现从Git到Jenkins的持续测试
  • Odoo:免费开源的医疗器械行业解决方案
  • NPM打包时,报reason: getaddrinfo ENOTFOUND registry.nlark.com