2015-11-18 21:51:25 +01:00
|
|
|
#include "BH1750FVI.h"
|
|
|
|
|
|
2015-11-19 01:27:18 +01:00
|
|
|
BH1750FVI::BH1750FVI(){ }
|
2015-11-18 21:51:25 +01:00
|
|
|
|
2015-11-19 01:27:18 +01:00
|
|
|
void BH1750FVI::begin(void){
|
|
|
|
|
Wire.begin();
|
|
|
|
|
I2CWriteTo(Power_On ); //Turn it On
|
|
|
|
|
pinMode(AddrPin,OUTPUT);
|
|
|
|
|
digitalWrite(AddrPin,HIGH);
|
2015-11-18 21:51:25 +01:00
|
|
|
|
2015-11-19 01:27:18 +01:00
|
|
|
}
|
|
|
|
|
void BH1750FVI::Sleep(void){
|
|
|
|
|
I2CWriteTo(Power_Down ); //Turn it off , Reset operator won't work in this mode
|
|
|
|
|
}
|
|
|
|
|
void BH1750FVI::Reset(void){
|
|
|
|
|
I2CWriteTo(Power_On ); //Turn it on again
|
|
|
|
|
I2CWriteTo(reset ); //Reset
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void BH1750FVI::SetAddress(uint8_t add){
|
|
|
|
|
switch (add){
|
|
|
|
|
case Device_Address_L:
|
2015-11-18 21:51:25 +01:00
|
|
|
address_value=Device_Address_L;
|
|
|
|
|
digitalWrite(AddrPin,LOW);
|
|
|
|
|
state=false;
|
|
|
|
|
break;
|
2015-11-19 01:27:18 +01:00
|
|
|
case Device_Address_H:
|
2015-11-18 21:51:25 +01:00
|
|
|
address_value=Device_Address_H;
|
|
|
|
|
digitalWrite(AddrPin,HIGH);
|
|
|
|
|
state=true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
2015-11-19 01:27:18 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void BH1750FVI::SetMode(uint8_t MODE){
|
2015-11-18 21:51:25 +01:00
|
|
|
switch(MODE){
|
|
|
|
|
case Continuous_H_resolution_Mode:
|
|
|
|
|
break;
|
|
|
|
|
case Continuous_H_resolution_Mode2:
|
|
|
|
|
break;
|
|
|
|
|
case Continuous_L_resolution_Mode:
|
|
|
|
|
break;
|
|
|
|
|
case OneTime_H_resolution_Mode:
|
|
|
|
|
break;
|
|
|
|
|
case OneTime_H_resolution_Mode2:
|
|
|
|
|
break;
|
|
|
|
|
case OneTime_L_resolution_Mode:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
delay(10);
|
|
|
|
|
I2CWriteTo(MODE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint16_t BH1750FVI::GetLightIntensity(void){
|
|
|
|
|
uint16_t Intensity_value;
|
|
|
|
|
if(state ==true){
|
2015-11-19 01:27:18 +01:00
|
|
|
Wire.beginTransmission(Device_Address_H);
|
|
|
|
|
Wire.requestFrom(Device_Address_H, 2);
|
2015-11-18 21:51:25 +01:00
|
|
|
}
|
|
|
|
|
if(state ==false){
|
2015-11-19 01:27:18 +01:00
|
|
|
Wire.beginTransmission(Device_Address_L);
|
|
|
|
|
Wire.requestFrom(Device_Address_L, 2);
|
2015-11-18 21:51:25 +01:00
|
|
|
}
|
|
|
|
|
Intensity_value = Wire.read();
|
|
|
|
|
Intensity_value <<= 8;
|
|
|
|
|
Intensity_value |= Wire.read();
|
|
|
|
|
Wire.endTransmission();
|
|
|
|
|
Intensity_value=Intensity_value/1.2;
|
|
|
|
|
return Intensity_value;
|
2015-11-19 01:27:18 +01:00
|
|
|
}
|
2015-11-18 21:51:25 +01:00
|
|
|
|
2015-11-19 01:27:18 +01:00
|
|
|
void BH1750FVI::I2CWriteTo(uint8_t DataToSend){
|
|
|
|
|
Wire.beginTransmission(address_value);
|
|
|
|
|
Wire.write(DataToSend);
|
|
|
|
|
Wire.endTransmission();
|
|
|
|
|
}
|