#include #include LiquidCrystal_I2C lcd(0x27,16,2); int BH1750 = 0x23; byte buff[2]; void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("COSMOLIGHT"); lcd.setCursor(0, 1); lcd.print("Project Arduino"); Wire.begin(); // BH1750FVI reset Wire.beginTransmission(BH1750); Wire.write(0x07); Wire.endTransmission(); // BH1750FVI mode set Wire.beginTransmission(BH1750); Wire.write(0x10); Wire.endTransmission(); Serial.begin(9600); // message ---> RasPi Serial.println("Start!"); delay(3000); } void loop(){ float dt = 0; float lxData = 0; int i = 0; // BH1750FVI access start Wire.beginTransmission(BH1750); Wire.requestFrom(BH1750, 2); // byte read while(Wire.available()){ buff[i] = Wire.read(); i++; } // access end Wire.endTransmission(); dt = ((buff[0] << 8) | buff[1]); lxData = dt / 1.2; // data ---> RasPi Serial.print("read data: "); Serial.print(buff[0], BIN); // H: 8bit Serial.print("_"); Serial.println(buff[1], BIN); // L: 8bit if(lxData < 0){ Serial.print("> 65535: Overflow"); } else{ Serial.print((int)lxData, DEC); } Serial.println(" lx"); // data ---> LCD lcd.clear(); lcd.setCursor(0, 0); lcd.print("Illuminance(lx):"); lcd.setCursor(0, 1); if(lxData < 0){ lcd.print("Data Overflow"); } else{ lcd.print(String(lxData, 1)); } delay(1000); }