Skip to content

Commit af95cbd

Browse files
Changes for production hardware (#5)
Fixed registers for LPS22HB sensor Fixed light out pin Removed the assignement of 0x80 to the lps22hb ctrl_1 register, this writing has no effect and in datasheet is sugested to avoid it.
1 parent 5cbf308 commit af95cbd

File tree

2 files changed

+41
-44
lines changed

2 files changed

+41
-44
lines changed

src/MKRENV.cpp

Lines changed: 40 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -22,41 +22,40 @@
2222
#include "MKRENV.h"
2323

2424
#define HTS221_ADDRESS 0x5F
25-
#define LPS25H_ADDRESS 0x5C
25+
#define LPS22HB_ADDRESS 0x5C
2626
#define VEML6075_ADDRESS 0x10
2727

28-
#define LIGHT_SENSOR_PIN A3
29-
30-
#define HTS221_WHO_AM_I_REG 0x0f
31-
#define HTS221_CTRL1_REG 0x20
32-
#define HTS221_CTRL2_REG 0x21
33-
#define HTS221_STATUS_REG 0x27
34-
#define HTS221_HUMIDITY_OUT_L_REG 0x28
35-
#define HTS221_TEMP_OUT_L_REG 0x2a
36-
#define HTS221_H0_rH_x2_REG 0x30
37-
#define HTS221_H1_rH_x2_REG 0x31
38-
#define HTS221_T0_degC_x8_REG 0x32
39-
#define HTS221_T1_degC_x8_REG 0x33
40-
#define HTS221_T1_T0_MSB_REG 0x35
41-
#define HTS221_H0_T0_OUT_REG 0x36
42-
#define HTS221_H1_T0_OUT_REG 0x3a
43-
#define HTS221_T0_OUT_REG 0x3c
44-
#define HTS221_T1_OUT_REG 0x3e
45-
46-
#define LPS25H_WHO_AM_I_REG 0x0f
47-
#define LPS25H_CTRL1_REG 0x20
48-
#define LPS25H_CTRL2_REG 0x21
49-
#define LPS25H_STATUS_REG 0x27
50-
#define LPS25H_PRESS_OUT_XL_REG 0x28
51-
#define LPS25H_PRESS_OUT_L_REG 0x29
52-
#define LPS25H_PRESS_OUT_H_REG 0x2a
53-
54-
#define VEML6075_UV_CONF_REG 0x00
55-
#define VEML6075_UVA_DATA_REG 0x07
56-
#define VEML6075_UVB_DATA_REG 0x09
57-
#define VEML6075_UVCOMP1_REG 0x0a
58-
#define VEML6075_UVCOMP2_REG 0x0b
59-
#define VEML6075_ID_REG 0x0c
28+
#define LIGHT_SENSOR_PIN A2
29+
30+
#define HTS221_WHO_AM_I_REG 0x0f
31+
#define HTS221_CTRL1_REG 0x20
32+
#define HTS221_CTRL2_REG 0x21
33+
#define HTS221_STATUS_REG 0x27
34+
#define HTS221_HUMIDITY_OUT_L_REG 0x28
35+
#define HTS221_TEMP_OUT_L_REG 0x2a
36+
#define HTS221_H0_rH_x2_REG 0x30
37+
#define HTS221_H1_rH_x2_REG 0x31
38+
#define HTS221_T0_degC_x8_REG 0x32
39+
#define HTS221_T1_degC_x8_REG 0x33
40+
#define HTS221_T1_T0_MSB_REG 0x35
41+
#define HTS221_H0_T0_OUT_REG 0x36
42+
#define HTS221_H1_T0_OUT_REG 0x3a
43+
#define HTS221_T0_OUT_REG 0x3c
44+
#define HTS221_T1_OUT_REG 0x3e
45+
46+
#define LPS22HB_WHO_AM_I_REG 0x0f
47+
#define LPS22HB_CTRL2_REG 0x11
48+
#define LPS22HB_STATUS_REG 0x27
49+
#define LPS22HB_PRESS_OUT_XL_REG 0x28
50+
#define LPS22HB_PRESS_OUT_L_REG 0x29
51+
#define LPS22HB_PRESS_OUT_H_REG 0x2a
52+
53+
#define VEML6075_UV_CONF_REG 0x00
54+
#define VEML6075_UVA_DATA_REG 0x07
55+
#define VEML6075_UVB_DATA_REG 0x09
56+
#define VEML6075_UVCOMP1_REG 0x0a
57+
#define VEML6075_UVCOMP2_REG 0x0b
58+
#define VEML6075_ID_REG 0x0c
6059

6160
ENVClass::ENVClass(TwoWire & wire, int lightSensorPin) :
6261
_wire(&wire),
@@ -74,9 +73,8 @@ int ENVClass::begin()
7473
return 0;
7574
}
7675

77-
if (i2cRead(LPS25H_ADDRESS, LPS25H_WHO_AM_I_REG) != 0xbd) {
76+
if (i2cRead(LPS22HB_ADDRESS, LPS22HB_WHO_AM_I_REG) != 0xb1) {
7877
end();
79-
8078
return 0;
8179
}
8280

@@ -88,9 +86,8 @@ int ENVClass::begin()
8886

8987
readHTS221Calibration();
9088

91-
// enable HTS221 and LPS25H
89+
// enable HTS221
9290
i2cWrite(HTS221_ADDRESS, HTS221_CTRL1_REG, 0x80);
93-
i2cWrite(LPS25H_ADDRESS, LPS25H_CTRL1_REG, 0x80);
9491

9592
// configure VEML6075 for 100 ms
9693
i2cWriteWord(VEML6075_ADDRESS, VEML6075_UV_CONF_REG, 0x0010);
@@ -103,8 +100,7 @@ void ENVClass::end()
103100
// shutdown VEML6075
104101
i2cWriteWord(VEML6075_ADDRESS, VEML6075_UV_CONF_REG, 0x0001);
105102

106-
// disable HTS221 and LPS25H
107-
i2cWrite(LPS25H_ADDRESS, LPS25H_CTRL1_REG, 0x00);
103+
// disable HTS221
108104
i2cWrite(HTS221_ADDRESS, HTS221_CTRL1_REG, 0x00);
109105

110106
_wire->end();
@@ -148,17 +144,17 @@ float ENVClass::readHumidity()
148144
float ENVClass::readPressure()
149145
{
150146
// trigger one shot
151-
i2cWrite(LPS25H_ADDRESS, LPS25H_CTRL2_REG, 0x01);
147+
i2cWrite(LPS22HB_ADDRESS, LPS22HB_CTRL2_REG, 0x01);
152148

153149
// wait for completion
154-
while ((i2cRead(LPS25H_ADDRESS, LPS25H_STATUS_REG) & 0x02) == 0) {
150+
while ((i2cRead(LPS22HB_ADDRESS, LPS22HB_STATUS_REG) & 0x02) == 0) {
155151
yield();
156152
}
157153

158154
// read value and convert
159-
return (i2cRead(LPS25H_ADDRESS, LPS25H_PRESS_OUT_XL_REG) |
160-
(i2cRead(LPS25H_ADDRESS, LPS25H_PRESS_OUT_L_REG) << 8) |
161-
(i2cRead(LPS25H_ADDRESS, LPS25H_PRESS_OUT_H_REG) << 16)) / 40960.0;
155+
return (i2cRead(LPS22HB_ADDRESS, LPS22HB_PRESS_OUT_XL_REG) |
156+
(i2cRead(LPS22HB_ADDRESS, LPS22HB_PRESS_OUT_L_REG) << 8) |
157+
(i2cRead(LPS22HB_ADDRESS, LPS22HB_PRESS_OUT_H_REG) << 16)) / 40960.0;
162158
}
163159

164160
float ENVClass::readLux()

src/MKRENV.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include <Arduino.h>
2424
#include <Wire.h>
2525

26+
2627
class ENVClass {
2728
public:
2829
ENVClass(TwoWire& wire, int lightSensorPin);

0 commit comments

Comments
 (0)