upm  0.1.9
Sensor/Actuator repository for libmraa (v0.6.1)
htu21d.h
1 /*
2  * Author: William Penner <william.penner@intel.com>
3  * Copyright (c) 2014 Intel Corporation.
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a copy
6  * of this software and associated documentation files (the "Software"), to deal
7  * in the Software without restriction, including without limitation the rights
8  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9  * copies of the Software, and to permit persons to whom the Software is
10  * furnished to do so, subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice shall be included in
13  * all copies or substantial portions of the Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21  * THE SOFTWARE.
22  */
23 
24 #pragma once
25 
26 #include <string>
27 #include <mraa/i2c.h>
28 #include <math.h>
29 
30 #define HTU21D_NAME "htu21d"
31 #define HTU21D_I2C_ADDRESS 0x40
32 
33 /* HTU21D Commands */
34 #define HTU21D_READ_TEMP_HOLD 0xE3
35 #define HTU21D_READ_HUMIDITY_HOLD 0xE5
36 #define HTU21D_WRITE_USER_REG 0xE6
37 #define HTU21D_READ_USER_REG 0xE7
38 #define HTU21D_SOFT_RESET 0xFE
39 
40 /* User Register Bit Definition */
41 #define HTU21D_DISABLE_OTP 0x02
42 #define HTU21D_HEATER_ENABLE 0x04
43 #define HTU21D_END_OF_BATTERY 0x40
44 #define HTU21D_RESO_RH12_T14 0x00
45 #define HTU21D_RESO_RH8_T12 0x01
46 #define HTU21D_RESO_RH10_T13 0x80
47 #define HTU21D_RESO_RH11_T11 0x81
48 
49 namespace upm {
50 
83 class HTU21D {
84  public:
92  HTU21D (int bus, int devAddr=HTU21D_I2C_ADDRESS);
93 
97  ~HTU21D ();
98 
104  int sampleData(void);
105 
109  float getHumidity(int bSampleData = false);
110 
114  float getTemperature(int bSampleData = false);
115 
121  float getCompRH(int bSampleData = true);
122 
131  int setHeater(int bEnable = false);
132 
138  int resetSensor(void);
139 
145  int testSensor(void);
146 
153  mraa_result_t i2cWriteReg (uint8_t reg, uint8_t value);
154 
160  uint16_t i2cReadReg_16 (int reg);
161 
167  uint8_t i2cReadReg_8 (int reg);
168 
169  private:
170 
174  int32_t convertTemp(int32_t regval);
175 
179  int32_t convertRH(int32_t regval);
180 
181  std::string m_name;
182 
183  int m_controlAddr;
184  int m_bus;
185  mraa_i2c_context m_i2ControlCtx;
186 
187  int32_t m_temperature;
188  int32_t m_humidity;
189 };
190 
191 }
int testSensor(void)
Definition: htu21d.cpp:151
int setHeater(int bEnable=false)
Definition: htu21d.cpp:129
uint8_t i2cReadReg_8(int reg)
Definition: htu21d.cpp:231
float getHumidity(int bSampleData=false)
Definition: htu21d.cpp:105
uint16_t i2cReadReg_16(int reg)
Definition: htu21d.cpp:222
Definition: a110x.h:29
C++ API for HTU21D chip (Atmospheric Pressure Sensor)
Definition: htu21d.h:83
int sampleData(void)
Definition: htu21d.cpp:82
~HTU21D()
Definition: htu21d.cpp:50
mraa_result_t i2cWriteReg(uint8_t reg, uint8_t value)
Definition: htu21d.cpp:211
float getTemperature(int bSampleData=false)
Definition: htu21d.cpp:96
int resetSensor(void)
Definition: htu21d.cpp:55
HTU21D(int bus, int devAddr=HTU21D_I2C_ADDRESS)
Definition: htu21d.cpp:32
float getCompRH(int bSampleData=true)
Definition: htu21d.cpp:120