Arduino驱动BH1750模块实现光照强度采集
- 简介
- 特征
- 电气参数
- 接线
- 程序
- 结果
简介
BH1750FVI是一个用于I2 C总线接口的数字环境光传感器IC。该IC最适合于获取调节手机液晶显示屏和键盘背光功率的环境光数据。在高分辨率下探测大范围是可能的。(1 - 65535 lx )。BH1750FVI可以应用于手机,液晶电视,电脑,便携式游戏机,数码相机,数码摄像机,汽车导航,PDA,液晶显示器。
特征
1)I2C 总线接口(f /s 模式支持)
2)光谱的范围是人眼相近
3)照度数字转换器
4)宽范围和高分解(1 - 65535 勒克斯)
5)低电流关机功能
6) 50Hz / 60Hz 光噪声 reject-function
7) 1.8V 逻辑输入接口
8)无需任何外部零件
9)光源的依赖性不大(例如白炽灯、荧光灯、卤素灯、白色LED.太阳光下照射)
10)可以选择两种类型的I2 C从属地址。
11)可调的光学窗口测量结果的影响 (它可以探测分钟.使用本功能 0.11 勒克斯,最大.100000 勒克斯).
12)小测变异(+/- 20%)
13)红外线的影响很小
电气参数
供给电压 | 3~5 V |
---|---|
供给电流 | 200uA |
接口类型 | IIC |
工作温度 | -40°~ 85° |
尺寸 (长宽高) | -40°~ 85° |
接线
Arduino | BH1750 | LCD1602 |
---|---|---|
5V | VCC | VCC |
GND | GND | GND |
A4 | SDA | SDA |
A5 | SCL | SCL |
程序
#include <Wire.h> //IIC库
#include <LiquidCrystal_I2C.h>
#include <math.h>
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
int BH1750address = 0x23;//芯片地址为16位23
byte buff[2];
void setup(){
//pinMode(13,OUTPUT);
Wire.begin();
lcd.init(); //初始化LCD
lcd.backlight(); //打开LCD背光
Serial.begin(9600);
}
void loop(){
int i;
uint16_t val=0;
BH1750_Init(BH1750address);
delay(100);
if(2==BH1750_Read(BH1750address)) {
val=((buff[0]<<8)|buff[1])/1.2;
Serial.print("light:");
Serial.print(val,DEC);
Serial.println("Lux");
lcd.setCursor(2,0); //设置1602的光标到第0行第2个字符处
lcd.print("light:");
lcd.setCursor(8,0); //设置1602的光标到第0行第8个字符处
lcd.print(val,DEC);
lcd.print("Lux");
}
delay(500);
}
int BH1750_Read(int address) {
int i=0;
Wire.beginTransmission(address);
Wire.requestFrom(address, 2);
while(Wire.available()) {
buff[i] = Wire.read(); // read one byte
i++;
}
Wire.endTransmission();
return i;
}
void BH1750_Init(int address) {
Wire.beginTransmission(address);
Wire.write(0x10);//1lx reolution 120ms
Wire.endTransmission();
}
结果
串口打印光照值:
LCD1602显示光照值: