新闻详情

新闻详情

首页 / 资讯中心 / 详情

解密BH1750驱动代码:逐行解析bh1750_lib.py,从I2C初始化到lux换算公式(源师兄)

发布时间:2026/9/25 1:21:33来源:尧图网络
解密BH1750驱动代码:逐行解析bh1750_lib.py,从I2C初始化到lux换算公式(源师兄)
解密BH1750驱动代码逐行解析bh1750_lib.py从I2C初始化到lux换算公式源师兄【免费下载链接】CupCode_BH1750光线模块该模块用于测量环境光线强度项目地址: https://gitcode.com/yuanshixiong/test源师兄 CupCode_BH1750 光线模块是一个基于 I2C 的数字光照度传感器扩展用于测量环境光线强度lux。它把驱动逻辑全部浓缩在 library/bh1750_lib.py 一个文件里不到 40 行代码就能让开发板读出现实中的亮度。这篇文章带你逐行看懂这份 BH1750 驱动代码I2C 怎么初始化、传感器怎么唤醒、180ms 等待时间从哪来以及最关键的 lux 换算公式raw / 1.2的原理。哪怕你刚接触 I2C读完后也能独立排错。一图看懂3 个积木搞定环境光测量 ️这个扩展BH1750 光线模块面向新手的核心价值是积木拼一拼就能拿到 lux 数值和明暗档位。各文件分工如下详见 README.md文件作用library/bh1750_lib.pyBH1750 驱动库提供read_lux()与level()两个核心方法blocksdef.js积木定义 Python 代码生成category.json积木分类初始化 / 读取 lux / 明暗档config.json扩展说明设备名、描述cover.png800×450 扩展库展示图接线准备4 根线让 BH1750 跑起来在解析代码前先确认硬件接线摘自 README.md这是所有驱动代码能跑通的前提SCL → GPIO22I2C 时钟线代码默认值可改SDA → GPIO21I2C 数据线VCC → 3.3VGND → GNDADD → 接地这一步决定传感器地址为0x23接错会导致地址0x23探测不到设备⚠️ 很多读不到数据的问题最后都出在 ADD 引脚没接地这一行。逐行解析 bh1750_lib.py打开 bh1750_lib.py全文结构非常清晰一个地址常量 一个BH1750类 五个方法。下面按执行顺序拆解。第 1 步I2C 初始化给总线通电对应 bh1750_lib.py#L10-L13 的构造函数self.i2c I2C(0, sclPin(int(scl_pin)), sdaPin(int(sda_pin)), freq100000) self.power_on()三个要点引脚可配置默认scl_pin22、sda_pin21和你接线时使用的 GPIO 一致积木里的 SCL脚/SDA脚输入框改的就是这两个值。频率 100000100kHz标准 I2C 速率BH1750 完全支持稳定且兼容性强。构造完立即power_on()这是新手最容易漏的一步——BH1750 上电后默认处于掉电模式Power-Down不发送唤醒指令它就装死任何读取都无意义。第 2 步power_on()一个字节唤醒传感器对应 bh1750_lib.py#L15-L16方法体只有一条命令向地址0x23写入0x01。0x01是 BH1750 指令集中的Power-On 命令字作用是让传感器从掉电状态进入正常工作状态。配合顶部的_BH1750_ADDR 0x23bh1750_lib.py#L6这一行就完成了找到设备并叫醒它的全过程。第 3 步单次测量0x20 命令 180ms 等待核心方法_one_read()对应 bh1750_lib.py#L18-L24分三个动作动作代码含义为什么这样做写0x20启动单次、高分辨率1lx测量模式1lx 精度数值可直接换算 luxtime.sleep_ms(180)等待 180 毫秒一次测量最长需 120ms留足余量再读读 2 字节raw (data[0] 8) \| data[1]高字节在前、低字节在后拼成 16 位原始值这里回答两个高频疑问为什么必须等传感器需要时间完成光电转换过早读取会拿到上一次甚至无效的数据。代码选择 180ms比 120ms 理论值多出 60ms 安全余量。为什么左移 8 位I2C 读回的高 8 位在第一个字节 8把它挪回数值高位再与低字节按位或还原出完整的 0~65535 原始值。第 4 步lux 换算公式为什么除以 1.2换算就一行return round(raw / 1.2, 1)bh1750_lib.py#L24。系数1.2来自 BH1750 高分辨率模式的换算规范lux 原始值 ÷ 1.2。它把 16 位 ADC 原始计数标定成真实照度值round(..., 1)保留 1 位小数让积木显示更干净。read_lux()方法只是把_one_read()原样暴露出去bh1750_lib.py#L26-L27供积木读取光照(lux)调用。第 5 步level()把数字翻译成人话 ️level()bh1750_lib.py#L29-L39在读完 lux 后按阈值打档位方便直接显示在屏幕上lux 范围返回文字生活场景 1全黑关闭所有灯1 ~ 30夜间照明走廊夜灯30 ~ 200室内正常客厅日常200 ~ 1000明亮窗边工位≥ 1000强烈日晒户外晴天积木如何调用驱动3 个积木块blocksdef.js 里定义了 3 个积木与驱动方法一一对应光照传感器 BH1750SCL脚SDA脚初始化拼接引脚号生成BH1750(22, 21)并自动注入import bh1750_libblocksdef.js#L19-L27BH1750 读取光照(lux)生成_light.read_lux()输出数值型BH1750 明暗档位生成_light.level()输出室内正常这类文字blocksdef.js#L43-L55。分类布局见 category.json初始化、读取两组标签下各放积木颜色统一为#f3b23c扩展说明写在 config.json。新手排错清单3 个高频问题 ✅现象大概率原因对应代码I2C 扫不到0x23ADD 引脚没接地应为 0x23或 SCL/SDA 接反_BH1750_ADDR常量读数乱跳或恒为 0未先power_on()或测量前等待时间被删短bh1750_lib.py#L15-L21高亮下数值封顶超出量程属正常现象建议加滤波取平均_one_read()返回逻辑总结这份 40 行以内的 BH1750 驱动代码完整覆盖了 I2C 传感器驱动的标准套路定地址 → 配总线 → 唤醒 → 发测量命令 → 等转换 → 读原始值 → 按公式换算 lux。看懂 bh1750_lib.py你不仅解锁了环境光测量也拿到了理解几乎所有 I2C 传感器的钥匙。✨【免费下载链接】CupCode_BH1750光线模块该模块用于测量环境光线强度项目地址: https://gitcode.com/yuanshixiong/test创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

工业AR智能巡检方案落地实战:从PPT到现场,避坑指南与代码复现 2026/9/25 6:05:45

工业AR智能巡检方案落地实战:从PPT到现场,避坑指南与代码复现

简介:这份PPT方案面向工业运维工程师、设备管理人员及AR技术方案选型者,系统梳理了以XR技术为核心的智能巡检落地路径,重点解决传统巡检中状态参数无法实时查看、误操作漏检、专业水平参差与应急处理能力不足等痛点。包内共1个pptx文件&#…

阅读更多 →
校园卡服务管理系统JavaWeb毕业设计完整实现与部署指南 2026/9/25 6:05:45

校园卡服务管理系统JavaWeb毕业设计完整实现与部署指南

1. 毕业设计选这个课题,到底值不值每年到了毕设季,咨询我最多的JavaWeb方向题目就是这类"管理系统"题:学生管理系统、图书管理系统、校园卡服务管理系统。很多同学觉得这类题太普通,担心答辩时被导师挑刺。以我带过的多…

阅读更多 →
SAE J2931/4 实战指南:EV 充电 PLC 通信从耦合电路到 SLAC 调试 2026/9/25 6:05:33

SAE J2931/4 实战指南:EV 充电 PLC 通信从耦合电路到 SLAC 调试

简介:SAE J2931/4:2014 是国际自动机工程师学会发布的插电式电动汽车宽带电力线通信标准技术报告,面向充电设施研发、车载通信协议设计及电动汽车充电系统测试的工程师与技术人员。该标准给出了EVSE(电动汽车供电设备)与插电式车辆…

阅读更多 →
杜比5.1测试视频:家庭影院音频校准实战指南 2026/9/25 6:05:32

杜比5.1测试视频:家庭影院音频校准实战指南

1. 这不是普通测试片,而是一把“耳朵标尺”你有没有遇到过这样的情况:花了几千块买了新电视,接上回音壁,满心期待杜比5.1环绕声的沉浸感,结果一开电影——人声全挤在中间,爆炸声像从左耳塞里蹦出来的&#…

阅读更多 →
python-for-android(p4a)完全指南:将 Python 应用打包为 Android APK / AAB / AAR 2026/9/25 6:05:26

python-for-android(p4a)完全指南:将 Python 应用打包为 Android APK / AAB / AAR

开发工具构建工具移动开发 【免费下载链接】python-for-android Turn your Python application into an Android APK 项目地址: https://gitcode.com/gh_mirrors/py/python-for-android 点击查看 免费下载 python-for-android(以下简称 p4a)…

阅读更多 →
eslint-plugin-react 规则详解:react/jsx-props-no-spread-multi —— 禁止重复展开同一标识符 2026/9/25 6:05:14

eslint-plugin-react 规则详解:react/jsx-props-no-spread-multi —— 禁止重复展开同一标识符

开发工具代码质量静态分析 【免费下载链接】eslint-plugin-react React-specific linting rules for ESLint 项目地址: https://gitcode.com/gh_mirrors/es/eslint-plugin-react 点击查看 免费下载 📝 本文是 eslint-plugin-react 插件中 react/jsx-pro…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉