Light Intensity Sensor
in this activity we will be working with the BH1750FVI sensor module to measure the light intensity.
BH1750FVI digital light intensity module is a digital light intensity sensor integrated circuit used for two-wire serial bus interface. It uses the light intensity data collected by module to adjust the brightness of LCD and keyboard backlight. The module resolution can detect a wide range of light intensity changes.

Objectives:
Setup the circuit to allow the Arduino Uno to communicate with the BH1750FVI sensor.
Setup the Arduino IDE to be able to upload the code to the Arduino IDE.
Write the code to be able to serial print the light intensity readings.
Setup the Circuit:

Connect the GND pin of the sensor to the GND pin of the Arduino Uno.
Connect the V pin of the sensor to the 5v PIN of the Uno.
Connect the SDA pin of the sensor to the analog pin (A4) of the Uno.
Connect the SCL pin of the sensor to the analog pin (A5) of the Uno.
Configuring the Arduino IDE
Download the following library that will be used with BH1750FVI
Open the Arduino IDE on your desktop/laptop computer and open Sketch > Include Library > Add .Zip Library.
The Code:
Include the following code to your Arduino IDE:
//
/*
Measurement of illuminance using the BH1750FVI sensor module
Connection:
Module UNO
G <-----> GND
V <-----> 5V
SDA <-----> A4
SCL <-----> A5
*/
#include <Wire.h>
#define ADDRESS_BH1750FVI 0x23 //ADDR="L" for this module
#define ONE_TIME_H_RESOLUTION_MODE 0x20
//One Time H-Resolution Mode:
//Resolution = 1 lux
//Measurement time (max.) = 180ms
//Power down after each measurement
byte highByte = 0;
byte lowByte = 0;
unsigned int sensorOut = 0;
unsigned int illuminance = 0;
void setup()
{
Wire.begin();
Serial.begin(115200);
}
void loop()
{
Wire.beginTransmission(ADDRESS_BH1750FVI); //"notify" the matching device
Wire.write(ONE_TIME_H_RESOLUTION_MODE); //set operation mode
Wire.endTransmission();
delay(180);
Wire.requestFrom(ADDRESS_BH1750FVI, 2); //ask Arduino to read back 2 bytes from the sensor
highByte = Wire.read(); // get the high byte
lowByte = Wire.read(); // get the low byte
sensorOut = (highByte<<8)|lowByte;
illuminance = sensorOut/1.2;
Serial.print(illuminance); Serial.println(" lux");
delay(1000);
Last updated
Was this helpful?