Arduino驱动BH1750模块实现光照强度采集

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显示光照值:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42250136/article/details/131473376