test

Dependents:   gather_sensor_data

Committer:
readysteadygo2006
Date:
Thu Sep 08 14:05:53 2016 +0000
Revision:
0:be50fe376e4f
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
readysteadygo2006 0:be50fe376e4f 1 /*
readysteadygo2006 0:be50fe376e4f 2
readysteadygo2006 0:be50fe376e4f 3 This is a library for the BH1750FVI (GY-30) Digital Light Sensor
readysteadygo2006 0:be50fe376e4f 4 breakout board.
readysteadygo2006 0:be50fe376e4f 5
readysteadygo2006 0:be50fe376e4f 6 The board uses I2C for communication. 2 pins are required to
readysteadygo2006 0:be50fe376e4f 7 interface to the device and in most cases also pull up resistors.
readysteadygo2006 0:be50fe376e4f 8
readysteadygo2006 0:be50fe376e4f 9 Datasheet:
readysteadygo2006 0:be50fe376e4f 10 http://rohmfs.rohm.com/en/products/databook/datasheet/ic/sensor/light/bh1750fvi-e.pdf
readysteadygo2006 0:be50fe376e4f 11
readysteadygo2006 0:be50fe376e4f 12 Inspired by Christopher Laws, March, 2013.
readysteadygo2006 0:be50fe376e4f 13 Written by Michal Stehlik, August, 2014.
readysteadygo2006 0:be50fe376e4f 14
readysteadygo2006 0:be50fe376e4f 15 */
readysteadygo2006 0:be50fe376e4f 16
readysteadygo2006 0:be50fe376e4f 17 #ifndef BH1750_h
readysteadygo2006 0:be50fe376e4f 18 #define BH1750_h
readysteadygo2006 0:be50fe376e4f 19
readysteadygo2006 0:be50fe376e4f 20 #include "mbed.h"
readysteadygo2006 0:be50fe376e4f 21
readysteadygo2006 0:be50fe376e4f 22 #define BH1750_I2CADDR 0x46
readysteadygo2006 0:be50fe376e4f 23
readysteadygo2006 0:be50fe376e4f 24 // No active state
readysteadygo2006 0:be50fe376e4f 25 #define BH1750_POWER_DOWN 0x00
readysteadygo2006 0:be50fe376e4f 26
readysteadygo2006 0:be50fe376e4f 27 // Wating for measurment command
readysteadygo2006 0:be50fe376e4f 28 #define BH1750_POWER_ON 0x01
readysteadygo2006 0:be50fe376e4f 29
readysteadygo2006 0:be50fe376e4f 30 // Reset data register value - not accepted in POWER_DOWN mode
readysteadygo2006 0:be50fe376e4f 31 #define BH1750_RESET 0x07
readysteadygo2006 0:be50fe376e4f 32
readysteadygo2006 0:be50fe376e4f 33 // Start measurement at 1lx resolution. Measurement time is approx 120ms.
readysteadygo2006 0:be50fe376e4f 34 #define BH1750_CONTINUOUS_HIGH_RES_MODE 0x10
readysteadygo2006 0:be50fe376e4f 35
readysteadygo2006 0:be50fe376e4f 36 // Start measurement at 0.5lx resolution. Measurement time is approx 120ms.
readysteadygo2006 0:be50fe376e4f 37 #define BH1750_CONTINUOUS_HIGH_RES_MODE_2 0x11
readysteadygo2006 0:be50fe376e4f 38
readysteadygo2006 0:be50fe376e4f 39 // Start measurement at 4lx resolution. Measurement time is approx 16ms.
readysteadygo2006 0:be50fe376e4f 40 #define BH1750_CONTINUOUS_LOW_RES_MODE 0x13
readysteadygo2006 0:be50fe376e4f 41
readysteadygo2006 0:be50fe376e4f 42 // Start measurement at 1lx resolution. Measurement time is approx 120ms.
readysteadygo2006 0:be50fe376e4f 43 // Device is automatically set to Power Down after measurement.
readysteadygo2006 0:be50fe376e4f 44 #define BH1750_ONE_TIME_HIGH_RES_MODE 0x20
readysteadygo2006 0:be50fe376e4f 45
readysteadygo2006 0:be50fe376e4f 46 // Start measurement at 0.5lx resolution. Measurement time is approx 120ms.
readysteadygo2006 0:be50fe376e4f 47 // Device is automatically set to Power Down after measurement.
readysteadygo2006 0:be50fe376e4f 48 #define BH1750_ONE_TIME_HIGH_RES_MODE_2 0x21
readysteadygo2006 0:be50fe376e4f 49
readysteadygo2006 0:be50fe376e4f 50 // Start measurement at 1lx resolution. Measurement time is approx 120ms.
readysteadygo2006 0:be50fe376e4f 51 // Device is automatically set to Power Down after measurement.
readysteadygo2006 0:be50fe376e4f 52 #define BH1750_ONE_TIME_LOW_RES_MODE 0x23
readysteadygo2006 0:be50fe376e4f 53
readysteadygo2006 0:be50fe376e4f 54 /**
readysteadygo2006 0:be50fe376e4f 55 * @code
readysteadygo2006 0:be50fe376e4f 56 * #include "mbed.h"
readysteadygo2006 0:be50fe376e4f 57 * #include "BH1750.h"
readysteadygo2006 0:be50fe376e4f 58 *
readysteadygo2006 0:be50fe376e4f 59 * BH1750 lightSensor(I2C_SDA, I2C_SCL);
readysteadygo2006 0:be50fe376e4f 60 * Serial pc(SERIAL_TX, SERIAL_RX);
readysteadygo2006 0:be50fe376e4f 61 *
readysteadygo2006 0:be50fe376e4f 62 * int main()
readysteadygo2006 0:be50fe376e4f 63 * {
readysteadygo2006 0:be50fe376e4f 64 * lightSensor.init();
readysteadygo2006 0:be50fe376e4f 65 *
readysteadygo2006 0:be50fe376e4f 66 * while(1) {
readysteadygo2006 0:be50fe376e4f 67 * pc.printf("Light intensity: %.4f Lux\r\n", lightSensor.readIntesity());
readysteadygo2006 0:be50fe376e4f 68 * wait(5);
readysteadygo2006 0:be50fe376e4f 69 * }
readysteadygo2006 0:be50fe376e4f 70 * }
readysteadygo2006 0:be50fe376e4f 71 * @endcode
readysteadygo2006 0:be50fe376e4f 72 */
readysteadygo2006 0:be50fe376e4f 73
readysteadygo2006 0:be50fe376e4f 74 class BH1750
readysteadygo2006 0:be50fe376e4f 75 {
readysteadygo2006 0:be50fe376e4f 76 public:
readysteadygo2006 0:be50fe376e4f 77 /**
readysteadygo2006 0:be50fe376e4f 78 * @param sda
readysteadygo2006 0:be50fe376e4f 79 * @param scl
readysteadygo2006 0:be50fe376e4f 80 */
readysteadygo2006 0:be50fe376e4f 81 BH1750(PinName sda, PinName scl);
readysteadygo2006 0:be50fe376e4f 82
readysteadygo2006 0:be50fe376e4f 83 /**
readysteadygo2006 0:be50fe376e4f 84 * Initialize sensor with specified mode.
readysteadygo2006 0:be50fe376e4f 85 * Default mode is set to BH1750_CONTINUOUS_HIGH_RES_MODE.
readysteadygo2006 0:be50fe376e4f 86 * @param mode of sensor operation.
readysteadygo2006 0:be50fe376e4f 87 */
readysteadygo2006 0:be50fe376e4f 88 void init(char mode = BH1750_CONTINUOUS_HIGH_RES_MODE);
readysteadygo2006 0:be50fe376e4f 89
readysteadygo2006 0:be50fe376e4f 90 /**
readysteadygo2006 0:be50fe376e4f 91 * Configure sensor with specified mode.
readysteadygo2006 0:be50fe376e4f 92 * This function is called also in init(char);
readysteadygo2006 0:be50fe376e4f 93 * @param mode of sensor operation.
readysteadygo2006 0:be50fe376e4f 94 */
readysteadygo2006 0:be50fe376e4f 95 void configure(char mode);
readysteadygo2006 0:be50fe376e4f 96
readysteadygo2006 0:be50fe376e4f 97 /**
readysteadygo2006 0:be50fe376e4f 98 * Read light intensity.
readysteadygo2006 0:be50fe376e4f 99 * In addition also error code and raw data are filled.
readysteadygo2006 0:be50fe376e4f 100 * @return light intensity in Lux.
readysteadygo2006 0:be50fe376e4f 101 */
readysteadygo2006 0:be50fe376e4f 102 float readIntensity(void);
readysteadygo2006 0:be50fe376e4f 103
readysteadygo2006 0:be50fe376e4f 104 /**
readysteadygo2006 0:be50fe376e4f 105 * Get raw data obtained after sucessfull executing of readIntesity(void).
readysteadygo2006 0:be50fe376e4f 106 * @return unprocessed raw data readed from sensor.
readysteadygo2006 0:be50fe376e4f 107 */
readysteadygo2006 0:be50fe376e4f 108 char* getRawData(void);
readysteadygo2006 0:be50fe376e4f 109
readysteadygo2006 0:be50fe376e4f 110 /**
readysteadygo2006 0:be50fe376e4f 111 * @returns
readysteadygo2006 0:be50fe376e4f 112 * 0 no error.
readysteadygo2006 0:be50fe376e4f 113 * !=0 I2C error code.
readysteadygo2006 0:be50fe376e4f 114 */
readysteadygo2006 0:be50fe376e4f 115 int getStatus(void);
readysteadygo2006 0:be50fe376e4f 116
readysteadygo2006 0:be50fe376e4f 117 private:
readysteadygo2006 0:be50fe376e4f 118 I2C i2c;
readysteadygo2006 0:be50fe376e4f 119 char rawDataBuffer[2];
readysteadygo2006 0:be50fe376e4f 120 int status;
readysteadygo2006 0:be50fe376e4f 121 };
readysteadygo2006 0:be50fe376e4f 122
readysteadygo2006 0:be50fe376e4f 123 #endif