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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers BH1750.cpp Source File

BH1750.cpp

00001 
00002 
00003 #include "BH1750.h"
00004 
00005 BH1750::BH1750 (PinName sda, PinName scl) : i2c(sda,scl)
00006 {
00007     rawDataBuffer[0] = 0;
00008     rawDataBuffer[1] = 0;
00009     status = -1;
00010 }
00011 
00012 void BH1750::init(char mode)
00013 {
00014     configure(mode);
00015 }
00016 
00017 
00018 void BH1750::configure(char mode)
00019 {
00020     char data[1];
00021     switch (mode) {
00022         case BH1750_CONTINUOUS_HIGH_RES_MODE:
00023         case BH1750_CONTINUOUS_HIGH_RES_MODE_2:
00024         case BH1750_CONTINUOUS_LOW_RES_MODE:
00025         case BH1750_ONE_TIME_HIGH_RES_MODE:
00026         case BH1750_ONE_TIME_HIGH_RES_MODE_2:
00027         case BH1750_ONE_TIME_LOW_RES_MODE:
00028             data[0] = mode;
00029             status = i2c.write(BH1750_I2CADDR, data, sizeof(data), false);
00030             wait_ms(10);
00031             break;
00032         default:
00033             break;
00034     }
00035 }
00036 
00037 
00038 float BH1750::readIntesity(void)
00039 {
00040     status = i2c.read(BH1750_I2CADDR, rawDataBuffer, 2, false);
00041     if(status != 0) {
00042         return -1;
00043     }
00044     //success
00045     float result = 0;
00046     result = ((rawDataBuffer[0]<<8)|rawDataBuffer[1])/1.2;
00047     return result;
00048 }
00049 
00050 int BH1750::getStatus (void)
00051 {
00052     return status;
00053 }
00054 
00055 char* BH1750::getRawData(void)
00056 {
00057     return rawDataBuffer;
00058 }