#include //IIC #include // Start measurement at 1lx resolution. Measurement time is approx 120ms. #define BH1750_CONTINUOUS_HIGH_RES_MODE 0x10 // Start measurement at 0.5lx resolution. Measurement time is approx 120ms. #define BH1750_CONTINUOUS_HIGH_RES_MODE_2 0x11 // Start measurement at 4lx resolution. Measurement time is approx 16ms. #define BH1750_CONTINUOUS_LOW_RES_MODE 0x13 int BH1750address = 0x23; byte buff[2]; void setup() { Wire.begin(); Serial.begin(9600); } 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(BH1750_CONTINUOUS_HIGH_RES_MODE);// 1 lx resolution 120ms Wire.endTransmission(); }