mirror of
https://github.com/claws/BH1750.git
synced 2026-07-27 19:56:17 +00:00
fix continuous mode reset
This commit is contained in:
+17
-14
@@ -151,15 +151,15 @@ bool BH1750::setMTreg(byte MTreg) {
|
||||
// Send MTreg and the current mode to the sensor
|
||||
// High bit: 01000_MT[7,6,5]
|
||||
// Low bit: 011_MT[4,3,2,1,0]
|
||||
Wire.beginTransmission(BH1750_I2CADDR);
|
||||
__wire_write((0b01000 << 3) | (MTreg >> 5));
|
||||
ack = Wire.endTransmission();
|
||||
Wire.beginTransmission(BH1750_I2CADDR);
|
||||
__wire_write((0b011 << 5 ) | (MTreg & 0b111));
|
||||
ack = ack | Wire.endTransmission();
|
||||
Wire.beginTransmission(BH1750_I2CADDR);
|
||||
__wire_write(BH1750_MODE);
|
||||
ack = ack | Wire.endTransmission();
|
||||
_wire->beginTransmission(BH1750_I2CADDR);
|
||||
_wire->write((0b01000 << 3) | (MTreg >> 5));
|
||||
ack = _wire->endTransmission();
|
||||
_wire->beginTransmission(BH1750_I2CADDR);
|
||||
_wire->write((0b011 << 5 ) | (MTreg & 0b11111));
|
||||
ack = ack | _wire->endTransmission();
|
||||
_wire->beginTransmission(BH1750_I2CADDR);
|
||||
_wire->write(BH1750_MODE);
|
||||
ack = ack | _wire->endTransmission();
|
||||
|
||||
// Wait a few moments to wake up
|
||||
_delay_ms(10);
|
||||
@@ -219,11 +219,6 @@ float BH1750::readLightLevel(bool maxWait) {
|
||||
// Measurement result will be stored here
|
||||
float level = -1.0;
|
||||
|
||||
// Send mode to sensor
|
||||
Wire.beginTransmission(BH1750_I2CADDR);
|
||||
__wire_write((uint8_t)BH1750_MODE);
|
||||
Wire.endTransmission();
|
||||
|
||||
// Wait for measurement to be taken.
|
||||
// Measurements have a maximum measurement time and a typical measurement
|
||||
// time. The maxWait argument determines which measurement wait time is
|
||||
@@ -237,10 +232,18 @@ float BH1750::readLightLevel(bool maxWait) {
|
||||
switch (BH1750_MODE) {
|
||||
|
||||
case BH1750::ONE_TIME_LOW_RES_MODE:
|
||||
// Send mode to sensor
|
||||
_wire->beginTransmission(BH1750_I2CADDR);
|
||||
_wire->write((uint8_t)BH1750_MODE);
|
||||
_wire->endTransmission();
|
||||
maxWait ? _delay_ms(24 * BH1750_MTreg/(byte)BH1750_DEFAULT_MTREG) : _delay_ms(16 * BH1750_MTreg/(byte)BH1750_DEFAULT_MTREG);
|
||||
break;
|
||||
case BH1750::ONE_TIME_HIGH_RES_MODE:
|
||||
case BH1750::ONE_TIME_HIGH_RES_MODE_2:
|
||||
// Send mode to sensor
|
||||
_wire->beginTransmission(BH1750_I2CADDR);
|
||||
_wire->write((uint8_t)BH1750_MODE);
|
||||
_wire->endTransmission();
|
||||
maxWait ? _delay_ms(180 * BH1750_MTreg/(byte)BH1750_DEFAULT_MTREG) :_delay_ms(120 * BH1750_MTreg/(byte)BH1750_DEFAULT_MTREG);
|
||||
break;
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user