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 #include "BH1750.h"
readysteadygo2006 0:be50fe376e4f 18
readysteadygo2006 0:be50fe376e4f 19 BH1750::BH1750(PinName sda, PinName scl) : i2c(sda,scl)
readysteadygo2006 0:be50fe376e4f 20 {
readysteadygo2006 0:be50fe376e4f 21 rawDataBuffer[0] = 0;
readysteadygo2006 0:be50fe376e4f 22 rawDataBuffer[1] = 0;
readysteadygo2006 0:be50fe376e4f 23 status = -1;
readysteadygo2006 0:be50fe376e4f 24 }
readysteadygo2006 0:be50fe376e4f 25
readysteadygo2006 0:be50fe376e4f 26 void BH1750::init(char mode)
readysteadygo2006 0:be50fe376e4f 27 {
readysteadygo2006 0:be50fe376e4f 28 configure(mode);
readysteadygo2006 0:be50fe376e4f 29 }
readysteadygo2006 0:be50fe376e4f 30
readysteadygo2006 0:be50fe376e4f 31
readysteadygo2006 0:be50fe376e4f 32 void BH1750::configure(char mode)
readysteadygo2006 0:be50fe376e4f 33 {
readysteadygo2006 0:be50fe376e4f 34 char data[1];
readysteadygo2006 0:be50fe376e4f 35 switch (mode) {
readysteadygo2006 0:be50fe376e4f 36 case BH1750_CONTINUOUS_HIGH_RES_MODE:
readysteadygo2006 0:be50fe376e4f 37 case BH1750_CONTINUOUS_HIGH_RES_MODE_2:
readysteadygo2006 0:be50fe376e4f 38 case BH1750_CONTINUOUS_LOW_RES_MODE:
readysteadygo2006 0:be50fe376e4f 39 case BH1750_ONE_TIME_HIGH_RES_MODE:
readysteadygo2006 0:be50fe376e4f 40 case BH1750_ONE_TIME_HIGH_RES_MODE_2:
readysteadygo2006 0:be50fe376e4f 41 case BH1750_ONE_TIME_LOW_RES_MODE:
readysteadygo2006 0:be50fe376e4f 42 data[0] = mode;
readysteadygo2006 0:be50fe376e4f 43 status = i2c.write(BH1750_I2CADDR, data, sizeof(data), false);
readysteadygo2006 0:be50fe376e4f 44 wait_ms(10);
readysteadygo2006 0:be50fe376e4f 45 break;
readysteadygo2006 0:be50fe376e4f 46 default:
readysteadygo2006 0:be50fe376e4f 47 break;
readysteadygo2006 0:be50fe376e4f 48 }
readysteadygo2006 0:be50fe376e4f 49 }
readysteadygo2006 0:be50fe376e4f 50
readysteadygo2006 0:be50fe376e4f 51
readysteadygo2006 0:be50fe376e4f 52 float BH1750::readIntensity(void)
readysteadygo2006 0:be50fe376e4f 53 {
readysteadygo2006 0:be50fe376e4f 54 status = i2c.read(BH1750_I2CADDR, rawDataBuffer, 2, false);
readysteadygo2006 0:be50fe376e4f 55 if(status != 0) {
readysteadygo2006 0:be50fe376e4f 56 return -1;
readysteadygo2006 0:be50fe376e4f 57 }
readysteadygo2006 0:be50fe376e4f 58 //success
readysteadygo2006 0:be50fe376e4f 59 float result = 0;
readysteadygo2006 0:be50fe376e4f 60 result = ((rawDataBuffer[0]<<8)|rawDataBuffer[1])/1.2;
readysteadygo2006 0:be50fe376e4f 61 return result;
readysteadygo2006 0:be50fe376e4f 62 }
readysteadygo2006 0:be50fe376e4f 63
readysteadygo2006 0:be50fe376e4f 64 int BH1750::getStatus(void)
readysteadygo2006 0:be50fe376e4f 65 {
readysteadygo2006 0:be50fe376e4f 66 return status;
readysteadygo2006 0:be50fe376e4f 67 }
readysteadygo2006 0:be50fe376e4f 68
readysteadygo2006 0:be50fe376e4f 69 char* BH1750::getRawData(void)
readysteadygo2006 0:be50fe376e4f 70 {
readysteadygo2006 0:be50fe376e4f 71 return rawDataBuffer;
readysteadygo2006 0:be50fe376e4f 72 }