Example Code for Arduino-Light Intensity Measurement
Last revision 2025/12/26
This article offers a comprehensive guide on measuring light intensity with Arduino using the BH1750 sensor, including hardware setup, wiring connections, software requirements, and sample code implementation.
Hardware Preparation
- BH1750 Light Sensor (SKU: 975), Quantity: 1, Purchase Link: https://www.dfrobot.com/product-975.html
- Arduino Board, Quantity: 1
- Connecting Wires, Quantity: Several
Software Preparation
- Development Tool: Arduino IDE (Download link: https://www.arduino.cc/en/software)
- Required Libraries: Wire.h (built-in), math.h (built-in)
Wiring Diagram

Sample Code
/*
Sample code for the BH1750 Light sensor
Version 0.2
website:www.DFRobot.com
Connection:
VCC-5v
GND-GND
SCL-SCL(analog pin 5)
SDA-SDA(analog pin 4)
ADD-NC
*/
#include <Wire.h> //BH1750 I2C Mode
#include <math.h>
int BH1750address = 0x23; //setting I2C address
byte buff[2];
void setup() {
Wire.begin();
Serial.begin(9600);//init Serail band rate
}
void loop() {
int i;
uint16_t val=0;
BH1750_Init(BH1750address);
delay(200);
if(2==BH1750_Read(BH1750address)) {
val=((buff[0]<<8)|buff[1])/1.2;
Serial.print(val,DEC);
Serial.println("[lx]");
}
delay(150);
}
int BH1750_Read(int address) {
int i=0;
Wire.beginTransmission(address);
Wire.requestFrom(address, 2);
while(Wire.available()) {
buff[i] = Wire.read(); // receive one byte
i++;
}
Wire.endTransmission();
return i;
}
void BH1750_Init(int address) {
Wire.beginTransmission(address);
Wire.write(0x10);//1lx reolution 120ms
Wire.endTransmission();
}
Was this article helpful?
