Adafruit SHT4x Library
Adafruit_SHT4x.h
Go to the documentation of this file.
1 
20 #ifndef ADAFRUIT_SHT4x_H
21 #define ADAFRUIT_SHT4x_H
22 
23 #include "Arduino.h"
24 #include <Adafruit_I2CDevice.h>
25 #include <Adafruit_Sensor.h>
26 
27 #define SHT4x_DEFAULT_ADDR 0x44
28 #define SHT4x_NOHEAT_HIGHPRECISION \
29  0xFD
30 #define SHT4x_NOHEAT_MEDPRECISION \
31  0xF6
32 #define SHT4x_NOHEAT_LOWPRECISION \
33  0xE0
35 #define SHT4x_HIGHHEAT_1S \
36  0x39
37 #define SHT4x_HIGHHEAT_100MS \
38  0x32
39 #define SHT4x_MEDHEAT_1S \
40  0x2F
41 #define SHT4x_MEDHEAT_100MS \
42  0x24
43 #define SHT4x_LOWHEAT_1S \
44  0x1E
45 #define SHT4x_LOWHEAT_100MS \
46  0x15
48 #define SHT4x_READSERIAL 0x89
49 #define SHT4x_SOFTRESET 0x94
52 typedef enum {
53  SHT4X_HIGH_PRECISION,
54  SHT4X_MED_PRECISION,
55  SHT4X_LOW_PRECISION,
57 
59 typedef enum {
60  SHT4X_NO_HEATER,
61  SHT4X_HIGH_HEATER_1S,
62  SHT4X_HIGH_HEATER_100MS,
63  SHT4X_MED_HEATER_1S,
64  SHT4X_MED_HEATER_100MS,
65  SHT4X_LOW_HEATER_1S,
66  SHT4X_LOW_HEATER_100MS,
68 
69 class Adafruit_SHT4x;
70 
76 class Adafruit_SHT4x_Humidity : public Adafruit_Sensor {
77 public:
80  Adafruit_SHT4x_Humidity(Adafruit_SHT4x *parent) { _theSHT4x = parent; }
81  bool getEvent(sensors_event_t *);
82  void getSensor(sensor_t *);
83 
84 private:
85  int _sensorID = 0x0401;
86  Adafruit_SHT4x *_theSHT4x = NULL;
87 };
88 
94 class Adafruit_SHT4x_Temp : public Adafruit_Sensor {
95 public:
98  Adafruit_SHT4x_Temp(Adafruit_SHT4x *parent) { _theSHT4x = parent; }
99 
100  bool getEvent(sensors_event_t *);
101  void getSensor(sensor_t *);
102 
103 private:
104  int _sensorID = 0x0400;
105  Adafruit_SHT4x *_theSHT4x = NULL;
106 };
107 
112 public:
113  Adafruit_SHT4x(void);
114  ~Adafruit_SHT4x(void);
115 
116  bool begin(TwoWire *theWire = &Wire);
117  uint32_t readSerial(void);
118  bool reset(void);
119 
120  void setPrecision(sht4x_precision_t prec);
121  sht4x_precision_t getPrecision(void);
122  void setHeater(sht4x_heater_t heat);
123  sht4x_heater_t getHeater(void);
124 
125  bool getEvent(sensors_event_t *humidity, sensors_event_t *temp);
126  Adafruit_Sensor *getTemperatureSensor(void);
127  Adafruit_Sensor *getHumiditySensor(void);
128 
129 protected:
130  float _temperature,
131  _humidity;
132 
134  uint16_t _sensorid_temp;
135 
136  Adafruit_I2CDevice *i2c_dev = NULL;
137  Adafruit_SHT4x_Temp *temp_sensor = NULL;
138  Adafruit_SHT4x_Humidity *humidity_sensor =
139  NULL;
140 
141 private:
142  sht4x_precision_t _precision = SHT4X_HIGH_PRECISION;
143  sht4x_heater_t _heater = SHT4X_NO_HEATER;
144 
145  bool writeCommand(uint16_t cmd);
146  bool readCommand(uint16_t command, uint8_t *buffer, uint8_t num_bytes);
147 
148  friend class Adafruit_SHT4x_Temp;
149  friend class Adafruit_SHT4x_Humidity;
151 
153  void fillTempEvent(sensors_event_t *temp, uint32_t timestamp);
154  void fillHumidityEvent(sensors_event_t *humidity, uint32_t timestamp);
155 };
156 
157 #endif
uint16_t _sensorid_temp
ID number for temperature.
Definition: Adafruit_SHT4x.h:134
Adafruit_SHT4x_Humidity(Adafruit_SHT4x *parent)
Create an Adafruit_Sensor compatible object for the humidity sensor.
Definition: Adafruit_SHT4x.h:80
Adafruit_SHT4x_Temp(Adafruit_SHT4x *parent)
Create an Adafruit_Sensor compatible object for the temp sensor.
Definition: Adafruit_SHT4x.h:98
Definition: Adafruit_SHT4x.h:111
float _temperature
Last reading&#39;s temperature (C)
Definition: Adafruit_SHT4x.h:130
uint16_t _sensorid_humidity
ID number for humidity.
Definition: Adafruit_SHT4x.h:133
sht4x_precision_t
Definition: Adafruit_SHT4x.h:52
bool getEvent(sensors_event_t *)
Gets the humidity as a standard sensor event.
Definition: Adafruit_SHT4x.cpp:314
sht4x_heater_t
Definition: Adafruit_SHT4x.h:59
Adafruit Unified Sensor interface for the humidity sensor component of SHT4x.
Definition: Adafruit_SHT4x.h:76
void getSensor(sensor_t *)
Gets the sensor_t object describing the SHT4x&#39;s humidity sensor.
Definition: Adafruit_SHT4x.cpp:294
Adafruit Unified Sensor interface for the temperature sensor component of SHT4x.
Definition: Adafruit_SHT4x.h:94