2016-02-01 17:52:17 +01:00
|
|
|
/*
|
|
|
|
|
|
|
|
|
|
This is a library for the BH1750FVI Digital Light Sensor
|
|
|
|
|
breakout board.
|
|
|
|
|
|
|
|
|
|
The board uses I2C for communication. 2 pins are required to
|
|
|
|
|
interface to the device.
|
|
|
|
|
|
|
|
|
|
Datasheet:
|
|
|
|
|
http://rohmfs.rohm.com/en/products/databook/datasheet/ic/sensor/light/bh1750fvi-e.pdf
|
|
|
|
|
|
|
|
|
|
based on Christopher Laws, March, 2013 code.
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
#ifndef HARDWAREBH1750_H
|
|
|
|
|
#define HARDWAREBH1750_H
|
|
|
|
|
|
2016-02-24 21:51:16 +01:00
|
|
|
#include <Wire.h>
|
|
|
|
|
#include "HalInterfaces.h"
|
|
|
|
|
|
2016-02-01 17:52:17 +01:00
|
|
|
|
|
|
|
|
#define BH1750_DEBUG 0
|
|
|
|
|
|
|
|
|
|
#define BH1750_I2CADDR 0x23
|
|
|
|
|
|
|
|
|
|
// No active state
|
|
|
|
|
#define BH1750_POWER_DOWN 0x00
|
|
|
|
|
|
|
|
|
|
// Waiting for measurement command
|
|
|
|
|
#define BH1750_POWER_ON 0x01
|
|
|
|
|
|
|
|
|
|
// Reset data register value - not accepted in POWER_DOWN mode
|
|
|
|
|
#define BH1750_RESET 0x07
|
|
|
|
|
|
|
|
|
|
// 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
|
|
|
|
|
|
|
|
|
|
// Start measurement at 1lx resolution. Measurement time is approx 120ms.
|
|
|
|
|
// Device is automatically set to Power Down after measurement.
|
|
|
|
|
#define BH1750_ONE_TIME_HIGH_RES_MODE 0x20
|
|
|
|
|
|
|
|
|
|
// Start measurement at 0.5lx resolution. Measurement time is approx 120ms.
|
|
|
|
|
// Device is automatically set to Power Down after measurement.
|
|
|
|
|
#define BH1750_ONE_TIME_HIGH_RES_MODE_2 0x21
|
|
|
|
|
|
|
|
|
|
// Start measurement at 1lx resolution. Measurement time is approx 120ms.
|
|
|
|
|
// Device is automatically set to Power Down after measurement.
|
|
|
|
|
#define BH1750_ONE_TIME_LOW_RES_MODE 0x23
|
|
|
|
|
|
|
|
|
|
|
2016-02-24 21:51:16 +01:00
|
|
|
class HardwareBH1750 : public HardwarePowerConsumption, public HardwareLight{
|
|
|
|
|
public:
|
|
|
|
|
virtual void setup();
|
|
|
|
|
virtual unsigned int getLuminosity();
|
|
|
|
|
virtual unsigned int getConsumption();
|
|
|
|
|
virtual void reset();
|
2016-02-01 17:52:17 +01:00
|
|
|
|
2016-02-24 21:51:16 +01:00
|
|
|
void configure(uint8_t mode);
|
|
|
|
|
private:
|
|
|
|
|
unsigned int pulses;
|
|
|
|
|
void write8(uint8_t data);
|
2016-02-01 17:52:17 +01:00
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif // HARDWAREBH1750_H
|
|
|
|
|
|