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
6160ENVClass::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()
148144float 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
164160float ENVClass::readLux ()
0 commit comments