解密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),仅供参考
企业数字化 ERP 产品动态
相关推荐
MaaEnd实时开荒辅助:自动剧情、辅助战斗、自动拾取全功能上手指南 MaaEnd实时开荒辅助:自动剧情、辅助战斗、自动拾取全功能上手指南 【免费下载链接】MaaEnd MaaEnd 终末地小助手:基于视觉 AI 的「明日方舟:终末地」自动化工具 项目地址: https://gitcode.com/gh_mirrors/maa/MaaEnd
MaaEnd 是一款基… · 2026/9/25 1:21:29
Electron UDP调试工具实战:基于dgram与IPC的跨平台网络数据报解决方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:21:23
Delphi 12.3 集成 dOPC:OPC DA 客户端控件源码级实战指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:21:23
Django大数据选品实战:直播带货商品评分模型与可视化全解析 我做直播电商相关系统也有几年了,去年带学生做毕业设计时,选了“基于Django大数据在直播带货商品选品中的应用”这个方向。这个题目乍一看有点“拼盘”:Django是大数据?选品用什么大数据?实际上把一个真实的小型数据决… · 2026/9/26 0:52:32
深入 Agent Sprite Forge 后处理引擎:洋红泛洪、连通域切帧与 GIF 编码原理 深入 Agent Sprite Forge 后处理引擎:洋红泛洪、连通域切帧与 GIF 编码原理 【免费下载链接】agent-sprite-forge Agent Skill for generating 2D sprite sheets and map, transparent PNG frames, and animated GIFs from prompts. 项目地址: https://gitcode.co… · 2026/9/26 0:52:32
命令行批量下载抖音无水印视频:从单条到主页归档实战 1. 为什么我放弃了图形工具,转回命令行做抖音视频归档做内容运营或者素材收集的朋友,大概率都遇到过这样的场景:刷到一个特别对味的账号,想把ta主页的视频全部存下来做参考,结果一条条点开、复制链接、打开解析网站、等… · 2026/9/26 0:52:26
UE5 GAS框架实战:构建可扩展ARPG战斗系统的核心方法 1. 先别急着写代码:ARPG战斗框架到底在解决什么问题如果你在UE里做过ARPG,一定体会过战斗系统写到后期的那种窒息感。普攻连段、闪避无敌帧、受击硬直、怪物AI、伤害数字、BUFF叠层、技能打断、镜头冲击……表面上每个功能都不难,但一旦它们互… · 2026/9/26 0:52:20
贵州正规的除尘器加工厂哪家靠谱?株洲菲尔特生产厂靠谱商家测评排名 株洲菲尔特科技有限公司简介株洲菲尔特科技有限公司是一家专注工业干式除尘成套设备及非标成套装备研发、制造、安装全流程服务的企业,业务覆盖方案设计、粉尘收集系统搭建、风管配套、设备生产、安装调试到第三方检测的全链条服务,可针对工矿、矿山、建… · 2026/9/26 0:52:08
免费金融数据接口选型与Python接入实操:A股、美股、期货、外汇、数字货币全覆盖 1. 选型:免费数据源全景对比与选择逻辑1.1 为什么说免费金融数据接口是刚需先说个现实问题:很多人一接触量化交易或者个人投资分析,第一反应就是去找Wind、Bloomberg这类专业终端。Wind的Python接口确实好用,但一个账号一年几万块… · 2026/9/26 0:51:43
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46