mirror of
https://github.com/claws/BH1750.git
synced 2026-07-28 04:06:05 +00:00
75 lines
2.0 KiB
C++
75 lines
2.0 KiB
C++
/*
|
|
|
|
This is a library for the BH1750FVI Digital Light Sensor
|
|
breakout board.
|
|
|
|
The BH1750 board uses I2C for communication. Two pins are required to
|
|
interface to the device. Configuring the I2C bus is expected to be done
|
|
in user code. The BH1750 library doesn't do this automatically.
|
|
|
|
Datasheet: http://rohmfs.rohm.com/en/products/databook/datasheet/ic/sensor/light/bh1750fvi-e.pdf
|
|
|
|
Written by Christopher Laws, March, 2013.
|
|
|
|
*/
|
|
|
|
#ifndef BH1750_h
|
|
#define BH1750_h
|
|
|
|
#if (ARDUINO >= 100)
|
|
#include <Arduino.h>
|
|
#else
|
|
#include <WProgram.h>
|
|
#endif
|
|
|
|
#include "Wire.h"
|
|
|
|
// Uncomment, to enable debug messages
|
|
// #define BH1750_DEBUG
|
|
|
|
// No active state
|
|
#define BH1750_POWER_DOWN 0x00
|
|
|
|
// Wating for measurment 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
|
|
|
|
class BH1750 {
|
|
|
|
public:
|
|
BH1750 (byte addr = 0x23);
|
|
void begin (uint8_t mode = BH1750_CONTINUOUS_HIGH_RES_MODE);
|
|
void configure (uint8_t mode);
|
|
uint16_t readLightLevel(void);
|
|
|
|
private:
|
|
int BH1750_I2CADDR;
|
|
uint8_t BH1750_MODE;
|
|
|
|
};
|
|
|
|
#endif
|