upm  0.5.1
Sensor/Actuator repository for libmraa (v0.9.1)
 All Data Structures Files Functions Variables Enumerations Enumerator Macros Groups Pages
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.hpp>
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 
82 class HTU21D {
83  public:
91  HTU21D (int bus, int devAddr=HTU21D_I2C_ADDRESS);
92 
98  int sampleData(void);
99 
103  float getHumidity(int bSampleData = false);
104 
108  float getTemperature(int bSampleData = false);
109 
115  float getCompRH(int bSampleData = true);
116 
125  int setHeater(int bEnable = false);
126 
132  void resetSensor(void);
133 
139  int testSensor(void);
140 
147  mraa::Result i2cWriteReg (uint8_t reg, uint8_t value);
148 
154  uint16_t i2cReadReg_16 (int reg);
155 
161  uint8_t i2cReadReg_8 (int reg);
162 
163  private:
164 
168  int32_t convertTemp(int32_t regval);
169 
173  int32_t convertRH(int32_t regval);
174 
175  std::string m_name;
176 
177  int m_controlAddr;
178  int m_bus;
179  mraa::I2c m_i2ControlCtx;
180 
181  int32_t m_temperature;
182  int32_t m_humidity;
183 };
184 
185 }
int testSensor(void)
Definition: htu21d.cpp:149
int setHeater(int bEnable=false)
Definition: htu21d.cpp:127
uint8_t i2cReadReg_8(int reg)
Definition: htu21d.cpp:232
float getHumidity(int bSampleData=false)
Definition: htu21d.cpp:103
uint16_t i2cReadReg_16(int reg)
Definition: htu21d.cpp:223
API for the HTU21D Temperature & Humidity Sensor.
Definition: htu21d.h:82
int sampleData(void)
Definition: htu21d.cpp:80
float getTemperature(int bSampleData=false)
Definition: htu21d.cpp:94
mraa::Result i2cWriteReg(uint8_t reg, uint8_t value)
Definition: htu21d.cpp:209
HTU21D(int bus, int devAddr=HTU21D_I2C_ADDRESS)
Definition: htu21d.cpp:35
float getCompRH(int bSampleData=true)
Definition: htu21d.cpp:118
void resetSensor(void)
Definition: htu21d.cpp:53