照度传感器OPT3004应用笔记二
Posted 三明治开发社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了照度传感器OPT3004应用笔记二相关的知识,希望对你有一定的参考价值。
照度传感器OPT3004应用笔记二
I2C读写流程框图
寄存器说明
- result寄存器:光照度数据更新后存储的寄存器。
光照强度值的换算公式:
- configuration寄存器:芯片工作模式等配置寄存器
默认1100b,自动切换全量程检测,我们不需要修改。
新数据更新时间,默认1b,更新时间800ms,可降低噪声干扰。一般情况下,不做更改。
传感器开启/关闭设置位,默认00b,传感器处在关闭状态,照度数据不更新;将该位设置为01,单次开启,完成后自动关闭;一般我们把改为设置为10,连续工作模式。
其他位保持默认状态,就可以正常工作了。
- Low-Limit 寄存器:存放设置的光照强度的最小阀值。
LE[3:0]:对应的是result寄存器的E[3:0],光照强度阀值的换算公式:
lux = LSB_Size × TL[11:0]
- High-Limit 寄存器:存放设置的光照强度的最大阀值。
HE[3:0]:对应的是result寄存器的E[3:0],光照强度阀值的换算公式:
lux = LSB_Size × TH[11:0]
操作实例
基于树莓派的PI Pico与OPT3004的I2C通信
- 开启OPT3004连续工作模式
from machine import Pin, I2C
i2c = I2C(0, scl=Pin(9), sda=Pin(8), freq=100000) #I2C0
i2c.writeto(68, bytes([0x01,0xcc,0x10])) #写 0xcc10到configuration寄存器,其中,68是芯片的地址码,0x01是configuration寄存器地址,OPT3004开启连续工作模式。
#读取照度数据
i2c.writeto(68, bytes([0x00])) #Setting the result Register Address 。
rev_buf = i2c.readfrom(68, 2) #读取result Register的16位数据。
- 开启OPT3004连续工作模式,设置超过最大阀值时,INT引脚拉低。
from machine import Pin, I2C
i2c = I2C(0, scl=Pin(9), sda=Pin(8), freq=100000) #I2C0
i2c.writeto(68, bytes([0x01,0xcc,0x10])) #OPT3004开启连续工作模式,INT引脚默认高电平,中断触发低电平,中断锁存窗口模式。
#设置1000lux为最大阀值
i2c.writeto(68, bytes([0x03,0x5c,0x35])) #写 0x5c35到configuration寄存器
- 通过读取configuration寄存器,可清除INT引脚状态。
i2c.writeto(68, bytes([0x01])) #Setting the configuration Register Address 。
rev_buf = i2c.readfrom(68, 2) #读取configuration Register的16位数据,可清除INT引脚状态。
OVER:好记忆不如烂笔记
以上是关于照度传感器OPT3004应用笔记二的主要内容,如果未能解决你的问题,请参考以下文章
张高兴的 Windows 10 IoT 开发笔记:BH1750FVI 光照度传感器
张高兴的 Windows 10 IoT 开发笔记:BH1750FVI 光照度传感器