Library for the BH1750 Digital 16-bit Serial Output Type Ambient Light Sensor IC.

BH1750.h

Committer:
mcm
Date:
2017-08-10
Revision:
0:bea4477679ee
Child:
1:8115dc8275eb

File content as of revision 0:bea4477679ee:

#ifndef BH1750_H
#define BH1750_H
 
#include "mbed.h"
 
//!Library for the BH1750 Digital 16-bit Serial Output Type Ambient Light Sensor IC.

/**
  * @brief   DEFAULT ADDRESS
  */
#define BH1750_ADDR_L                               0x23
#define BH1750_ADDR_H                               0x5C

/**
  * @brief   COMMAND REGISTERS
  */
#define BH1750_POWER_DOWN                           0x00        /*!<   No active state                                                                                                                                  */
#define BH1750_POWER_ON                             0x01        /*!<   Waiting for measurement command                                                                                                                  */
#define BH1750_RESET                                0x07        /*!<   Reset Data register value. Reset command is not acceptable in Power Down mode                                                                    */
#define BH1750_CONTINUOUSLY_H_RESOLUTION_MODE       0x10        /*!<   Start measurement at 1lx resolution. Measurement Time is typically 120ms                                                                         */
#define BH1750_CONTINUOUSLY_H_RESOLUTION_MODE2      0x11        /*!<   Start measurement at 0.5lx resolution. Measurement Time is typically 120ms                                                                       */
#define BH1750_CONTINUOUSLY_L_RESOLUTION_MODE       0x13        /*!<   Start measurement at 4lx resolution. Measurement Time is typically 16ms                                                                          */
#define BH1750_ONE_TIME_H_RESOLUTION_MODE           0x20        /*!<   Start measurement at 1lx resolution. Measurement Time is typically 120ms. It is automatically set to Power Down mode after measurement           */
#define BH1750_ONE_TIME_H_RESOLUTION_MODE2          0x21        /*!<   Start measurement at 0.5lx resolution. Measurement Time is typically 120ms. It is automatically set to Power Down mode after measurement         */
#define BH1750_ONE_TIME_L_RESOLUTION_MODE           0x23        /*!<   Start measurement at 4lx resolution. Measurement Time is typically 16ms. It is automatically set to Power Down mode after measurement            */


/**
  * @brief   SENSITIVITY
  */
#define BH1750_SENSITIVITY_DEFAULT                  0x45        /*!<   Measurement Time Register by default. This is for registration of measurement time                                                                         */


/**
  * @brief   INTERNAL CONSTANTS
  */
#define BH1750_SUCCESS                              0x00
#define BH1750_FAILURE                              0x01
#define I2C_SUCCESS                                 0x00



/*!
[todo] 
*/
class BH1750
{
public:
  //!Creates an instance of the class.
  /*!
  [todo] 
  */
  BH1750 ( PinName sda, PinName scl, uint32_t addr, uint32_t hz );
  
  /*!
  Destroys instance.
  */ 
  ~BH1750();
  
  //![todo] 
  /*!
  [todo] 
  */

  
  uint32_t  BH1750_PowerDown          ();
  uint32_t  BH1750_PowerOn            ();
  uint32_t  BH1750_ResetDataRegister  ();
  uint32_t  BH1750_TriggerMeasurement ( uint32_t MODE );
  uint32_t  BH1750_NewSensitivity     ( uint8_t newSensitivity );
  uint32_t  BH1750_ReadRawData        ( char* myRawData );
  uint32_t  BH1750_ReadLux            ( float* myLux );
  
  
private:
  I2C      i2c;
  uint32_t BH1750_Addr;
  uint32_t BH1750_Mode;
};
 
#endif