bmp180 reading of values
Posted: 16 Oct 2016 12:24
Hi, I've tried to enhance the example of bmp180 to send its values to the zwave controller.
The problem is: I do not understand the values which are sent to my razberry.
e.g.: Temperature is always 0, pressure is 234.
The values should be: 23 for temp and 1024 for pressure (including compensation for altitude)
Normally the bmp will report pressure related to sealevel. Thats ok for me but this pressure would not be 234.
Here my current code (also with other devices):
The problem is: I do not understand the values which are sent to my razberry.
e.g.: Temperature is always 0, pressure is 234.
The values should be: 23 for temp and 1024 for pressure (including compensation for altitude)
Normally the bmp will report pressure related to sealevel. Thats ok for me but this pressure would not be 234.
Here my current code (also with other devices):
Code: Select all
#include "ZUNO_DHT.h"
#include "ZUNO_BMP180.h"
#include "Wire.h"
#define BH1750_I2CADDR 0x23
#define BH1750_CONTINUOUS_HIGH_RES_MODE 0x10
DHT dht22_sensor(11, DHT22);
ZUNO_BMP180 bmp;
// set up channel
ZUNO_SETUP_CHANNELS(
ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_TEMPERATURE,
SENSOR_MULTILEVEL_SCALE_CELSIUS,
SENSOR_MULTILEVEL_SIZE_TWO_BYTES,
SENSOR_MULTILEVEL_PRECISION_TWO_DECIMALS,
getterTemp),
ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_RELATIVE_HUMIDITY,
SENSOR_MULTILEVEL_SCALE_PERCENTAGE_VALUE,
SENSOR_MULTILEVEL_SIZE_TWO_BYTES,
SENSOR_MULTILEVEL_PRECISION_TWO_DECIMALS,
getterHumid),
ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_BAROMETRIC_PRESSURE,
SENSOR_MULTILEVEL_SCALE_KILO_PASCAL,
SENSOR_MULTILEVEL_SIZE_FOUR_BYTES,
SENSOR_MULTILEVEL_PRECISION_TWO_DECIMALS,
getterPressure),
ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_TEMPERATURE,
SENSOR_MULTILEVEL_SCALE_CELSIUS,
SENSOR_MULTILEVEL_SIZE_TWO_BYTES,
SENSOR_MULTILEVEL_PRECISION_TWO_DECIMALS,
getterTemp2),
ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_LUMINANCE,
SENSOR_MULTILEVEL_SCALE_LUX,
SENSOR_MULTILEVEL_SIZE_TWO_BYTES,
SENSOR_MULTILEVEL_PRECISION_ZERO_DECIMALS,
getterLight)
);
ZUNO_SETUP_SLEEPING_MODE(ZUNO_SLEEPING_MODE_SLEEPING);
float temp, humid, temp2;
int32_t pressure;
word lightLux;
void setup() {
Wire.begin();
Wire.beginTransmission(BH1750_I2CADDR);
Wire.write(BH1750_CONTINUOUS_HIGH_RES_MODE);
Wire.endTransmission();
}
void loop() {
dht22_sensor.begin();
delay(10);
dht22_sensor.read(true);
delay(10);
temp = dht22_sensor.readTemperature() * 100;
humid = dht22_sensor.readHumidity() * 100;
bmp.begin();
temp2 = bmp.readTemperature();
pressure = bmp.readPressure() * 100;
lightLux = readLightLevel();
zunoSendReport(1);
zunoSendReport(2);
zunoSendReport(3);
zunoSendReport(4);
zunoSendReport(5);
zunoSendReport(6);
zunoSendDeviceToSleep();
}
word readLightLevel() {
word level;
Wire.begin();
Wire.beginTransmission(BH1750_I2CADDR);
Wire.requestFrom(BH1750_I2CADDR, 2);
level = Wire.read() << 8;
level += Wire.read();
Wire.endTransmission();
level = level / 1.2; // convert to lux
return level;
}
word getterTemp() {
return temp;
}
word getterHumid() {
return humid;
}
word getterTemp2() {
return temp2;
}
DWORD getterPressure() {
return pressure;
}
word getterLight() {
return lightLux;
}