-
Notifications
You must be signed in to change notification settings - Fork 4
/
HTU21D.hpp
74 lines (52 loc) · 1.97 KB
/
HTU21D.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/* =====================================================================
Copyright © 2016, Avnet (R)
www.avnet.com
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
either express or implied. See the License for the specific
language governing permissions and limitations under the License.
@file TSYS01.hpp
@version 1.0
@date July 2017
======================================================================== */
#ifndef __HTU21D_HPP__
#define __HTU21D_HPP__
#include <stdint.h>
#define TRIGGER_TEMP_MEASURE_HOLD 0xE3
#define TRIGGER_HUMD_MEASURE_HOLD 0xE5
#define TRIGGER_TEMP_MEASURE_NOHOLD 0xF3
#define TRIGGER_HUMD_MEASURE_NOHOLD 0xF5
#define RH12_T14_RESOLUTION 0b00000000
#define RH08_T12_RESOLUTION 0b00000001
#define RH10_T13_RESOLUTION 0b10000000
#define RH11_T11_RESOLUTION 0b10000001
#define EOB_LT225 0b01000000
#define HEATER_ON 0b00000100
#define A 8.1332
#define B 1762.39
#define C 235.66
#define PP(t) pow(10, (A-B/(t+C)))
#define DEW(t,h) -(B/(log10((h*PP(t)/100))-A)+C)
class HTU21D {
public:
HTU21D();
~HTU21D();
float readHumidity(uint8_t trig);
float readTemperature(uint8_t trig);
uint8_t getOpMode(void);
void setOpMode(uint8_t resBits);
int getErr(void) { return _err; }
int reset(void);
private:
int _err;
uint8_t _OpM;
uint16_t readMeasurment(uint8_t cmd, uint16_t dly);
bool writeRegister(uint8_t cmd, uint8_t data, uint8_t dsiz);
uint8_t check_crc(uint16_t msg, uint8_t crc);
};
#endif