Library for BH1750 I2C light sensor. Supports autoranging! True to datasheet. (beware: calls are blocking at the moment)
BH1750.h
00001 #include "mbed.h" 00002 00003 #ifndef BH1750_h 00004 #define BH1750_h 00005 00006 class BH1750 00007 { 00008 private: 00009 static const char ADDRESS_LOW = 0x23; 00010 static const char ADDRESS_HIGH = 0x5C; 00011 static const char powerOn_cmd = 0b00000001; 00012 static const char powerDown_cmd = 0b00000000; 00013 static const char reset_cmd = 0b00000111; 00014 00015 static const char L_RES_MEASUREMENT_TIME = 12; // ms 00016 static const char H_RES_MEASUREMENT_TIME = 120; // ms 00017 00018 char _address; 00019 char _currentMode; 00020 char _currentMtreg; 00021 unsigned int _waitForMeasurement; 00022 bool _autoModeAdjustSwitch; 00023 I2C &_i2c_inst; 00024 00025 void _sendCommand(char); 00026 00027 unsigned int _readRaw(); 00028 bool _autoModeAdjust(float measurement); // returns if adjusted or left alone 00029 float _readSingle(); 00030 public: 00031 static const char CONTINOUS_L_RES_CMD = 0b00010011; 00032 static const char CONTINOUS_H_RES_CMD = 0b00010000; 00033 static const char CONTINOUS_H2_RES_CMD = 0b00010001; 00034 static const char ONETIME_L_RES_CMD = 0b01000011; 00035 static const char ONETIME_H_RES_CMD = 0b01000000; 00036 static const char ONETIME_H2_RES_CMD = 0b01000001; 00037 static const char DEFAULTMTREG = 69; 00038 00039 BH1750(I2C & , bool autoRange = false, bool addressPinState = false); 00040 void power(bool); // power on or off. 00041 float read(); // main function to read a value (or rather perform a read when in one_time mode) 00042 void setMode(const char); // set mode. datasheet lists L, H, H2 resolution modes in continous and one_time versions 00043 void setMtreg(char); // correcting measurement time. can be used to increase precision by a factor of 3.86 at the cost of time 00044 }; 00045 00046 #endif
Generated on Thu Jul 14 2022 00:03:06 by 1.7.2