

The BH1750 is a digital light sensor manufactured by ROHM Semiconductor. It is designed to measure ambient light intensity in lux, providing precise and reliable readings. The sensor communicates via the I2C protocol, making it easy to integrate into microcontroller-based systems. Its compact design and low power consumption make it ideal for a wide range of applications.








The following table outlines the key technical details of the BH1750:
| Parameter | Value |
|---|---|
| Operating Voltage (Vcc) | 2.4V to 3.6V |
| Operating Current | 0.12 mA (typical) |
| Measurement Range | 1 lux to 65535 lux |
| Communication Interface | I2C (7-bit address: 0x23 or 0x5C) |
| Light Measurement Modes | High Resolution, Low Resolution |
| Operating Temperature | -40°C to +85°C |
| Package Type | SOP-8 |
The BH1750 has 8 pins, as described in the table below:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VCC | Power supply (2.4V to 3.6V) |
| 2 | GND | Ground |
| 3 | ADDR | I2C address selection (Low: 0x23, High: 0x5C) |
| 4 | NC | Not connected (leave floating) |
| 5 | NC | Not connected (leave floating) |
| 6 | SCL | I2C clock line |
| 7 | SDA | I2C data line |
| 8 | NC | Not connected (leave floating) |
To use the BH1750, connect it to a microcontroller (e.g., Arduino UNO) as follows:
Below is an example Arduino sketch to read light intensity from the BH1750:
#include <Wire.h>
#include <BH1750.h>
// Create an instance of the BH1750 sensor
BH1750 lightMeter;
void setup() {
Serial.begin(9600); // Initialize serial communication
Wire.begin(); // Initialize I2C communication
// Initialize the BH1750 sensor
if (lightMeter.begin()) {
Serial.println("BH1750 initialized successfully.");
} else {
Serial.println("Error initializing BH1750. Check connections.");
while (1); // Halt execution if initialization fails
}
}
void loop() {
// Read light intensity in lux
float lux = lightMeter.readLightLevel();
// Print the light intensity to the serial monitor
Serial.print("Light Intensity: ");
Serial.print(lux);
Serial.println(" lux");
delay(1000); // Wait for 1 second before the next reading
}
No response from the sensor:
Incorrect or fluctuating readings:
Sensor not initializing:
Q: Can the BH1750 measure light intensity in complete darkness?
A: No, the BH1750 cannot measure light intensity in complete darkness. Its minimum measurable value is approximately 1 lux.
Q: How do I change the I2C address of the BH1750?
A: The I2C address can be changed by setting the ADDR pin:
Q: Can the BH1750 be used outdoors?
A: While the BH1750 can operate in a wide temperature range, it is not waterproof. Use a protective enclosure for outdoor applications.
Q: What is the difference between high and low resolution modes?
A: High resolution mode provides more accurate readings but takes longer to measure, while low resolution mode is faster but less precise.