Library for digital light sensor BH1750 (GY-30). SPI Test Comunication with ArduinoMega

Committer:
junmorenodi
Date:
Sat Jul 13 19:16:20 2019 +0000
Revision:
1:1a0ca36b6230
Parent:
0:58ee8a917618
Transmision datos

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vrabec 0:58ee8a917618 1
vrabec 0:58ee8a917618 2
vrabec 0:58ee8a917618 3 #include "BH1750.h"
vrabec 0:58ee8a917618 4
vrabec 0:58ee8a917618 5 BH1750::BH1750(PinName sda, PinName scl) : i2c(sda,scl)
vrabec 0:58ee8a917618 6 {
vrabec 0:58ee8a917618 7 rawDataBuffer[0] = 0;
vrabec 0:58ee8a917618 8 rawDataBuffer[1] = 0;
vrabec 0:58ee8a917618 9 status = -1;
vrabec 0:58ee8a917618 10 }
vrabec 0:58ee8a917618 11
vrabec 0:58ee8a917618 12 void BH1750::init(char mode)
vrabec 0:58ee8a917618 13 {
vrabec 0:58ee8a917618 14 configure(mode);
vrabec 0:58ee8a917618 15 }
vrabec 0:58ee8a917618 16
vrabec 0:58ee8a917618 17
vrabec 0:58ee8a917618 18 void BH1750::configure(char mode)
vrabec 0:58ee8a917618 19 {
vrabec 0:58ee8a917618 20 char data[1];
vrabec 0:58ee8a917618 21 switch (mode) {
vrabec 0:58ee8a917618 22 case BH1750_CONTINUOUS_HIGH_RES_MODE:
vrabec 0:58ee8a917618 23 case BH1750_CONTINUOUS_HIGH_RES_MODE_2:
vrabec 0:58ee8a917618 24 case BH1750_CONTINUOUS_LOW_RES_MODE:
vrabec 0:58ee8a917618 25 case BH1750_ONE_TIME_HIGH_RES_MODE:
vrabec 0:58ee8a917618 26 case BH1750_ONE_TIME_HIGH_RES_MODE_2:
vrabec 0:58ee8a917618 27 case BH1750_ONE_TIME_LOW_RES_MODE:
vrabec 0:58ee8a917618 28 data[0] = mode;
vrabec 0:58ee8a917618 29 status = i2c.write(BH1750_I2CADDR, data, sizeof(data), false);
vrabec 0:58ee8a917618 30 wait_ms(10);
vrabec 0:58ee8a917618 31 break;
vrabec 0:58ee8a917618 32 default:
vrabec 0:58ee8a917618 33 break;
vrabec 0:58ee8a917618 34 }
vrabec 0:58ee8a917618 35 }
vrabec 0:58ee8a917618 36
vrabec 0:58ee8a917618 37
vrabec 0:58ee8a917618 38 float BH1750::readIntesity(void)
vrabec 0:58ee8a917618 39 {
vrabec 0:58ee8a917618 40 status = i2c.read(BH1750_I2CADDR, rawDataBuffer, 2, false);
vrabec 0:58ee8a917618 41 if(status != 0) {
vrabec 0:58ee8a917618 42 return -1;
vrabec 0:58ee8a917618 43 }
vrabec 0:58ee8a917618 44 //success
vrabec 0:58ee8a917618 45 float result = 0;
vrabec 0:58ee8a917618 46 result = ((rawDataBuffer[0]<<8)|rawDataBuffer[1])/1.2;
vrabec 0:58ee8a917618 47 return result;
vrabec 0:58ee8a917618 48 }
vrabec 0:58ee8a917618 49
vrabec 0:58ee8a917618 50 int BH1750::getStatus(void)
vrabec 0:58ee8a917618 51 {
vrabec 0:58ee8a917618 52 return status;
vrabec 0:58ee8a917618 53 }
vrabec 0:58ee8a917618 54
vrabec 0:58ee8a917618 55 char* BH1750::getRawData(void)
vrabec 0:58ee8a917618 56 {
vrabec 0:58ee8a917618 57 return rawDataBuffer;
vrabec 0:58ee8a917618 58 }