ICSG020A BH1750 Arduino Light Intensity Meter Tutorial


ISCG020AThe ISCG020A is a light intensity meter that is based on the BH1750.   The unit of measurement used is the Lux.  Fundamentally, this unit of measurement allows us to measure the intensity of light.

I personally like it better than an LDR (Light Dependent Resistor) primary because I can set a fairly precise value and achieve fairly repeatable results.  That said, you could use the LDR and use this device to calibrate it.

This sensor could be used for things like control back lights on displays or activating lights when it is dark.

Get an ICSG020A

There are a few different BH1750 modules available on the internet and the best that I can tell, they’re all pretty much the same.  That said, if you insist on using the one I am discussing here, you can try any of the following vendors.


Bang Good


BH1750 Key Specifications

The BH1750 is a 3.3 volt device, so your implementation will require either a level shifter or resistors inline with your Arduino I2C interface.

Power Supply Voltage2.6 to 3.6 Vdc
(4.5V Max)
Power Dissipation260 mW
Measurement Range0 to 65535 Lux

ICSG020A Arduino Light Intensity Module Pin Outs

The device uses five pins.   Two are for power and ground.   The remaining three are for the I2C digital interface.

ICSG020A Pin Outs

ICSG020A BH1750 Arduino Tutorial

Download the BH1750FVI Library

You will need the freely available library for this device.   It can he found HERE.

If you’re unfamiliar with adding libraries to your Arduino IDE, I suggest reading this page.

A note of caution.  When you download library and unzip it,  the directory that is created will say ‘BH1750FVI_master’.  There is a sub directory beneath it that says simple ‘BH1750’.    You will want to move that sub directory and all of its files to be directly beneath your ‘libraries’ sub directory.

Connect the ISCG020A BH1750 to your Arduino

Using the image and table below,  connect your BH1750 to your Arduino.   As mentioned before, I recommend either the 510 ohm resistors or a level shifter.  There are some videos floating around that don’t do this, but I’m one of those guys that likes my widgets to last for more than an hour.

BH1750 Arduino Tutorial Hook Up

Arduino PinBH1750 Pin

Copy, Paste and Upload the Tutorial Sketch

The sketch below is simply a hacked up version of the sketch that comes as a library example.   I do that because I sometimes find it easier to understand the code when I remove the visual distractions.   That said, I do encourage you open the example as it is rich with additional information.

// Henry's Bench
// ICSG020A Tutorial

#include <Wire.h>
#include <BH1750FVI.h>

BH1750FVI LightSensor;

void setup() {   // put your setup code here, to run once:
  LightSensor.SetAddress(Device_Address_H);//Address 0x5C

  Serial.println("Tutorial Sketch Running");

void loop() {  
  uint16_t lux = LightSensor.GetLightIntensity();// Get Lux value
  Serial.print("Light: ");
  Serial.println(" lux");

Verify The Operation

Open your serial monitor.  Direct differing intensities of light to the six pin BH1750 chip on the circuit board.  As light intensity increases, you will see the LUX value increase.


BH1750 Datasheet

BH1750FVI Datasheet

One Comment

  1. valermth February 4, 2016

Leave a Reply

Your email address will not be published. Required fields are marked *