Library for BH1750 I2C light sensor. Supports autoranging! True to datasheet. (beware: calls are blocking at the moment)

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers BH1750.h Source File

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