mirror of
https://github.com/thooge/esp32-nmea2000-obp60.git
synced 2026-02-11 07:03:07 +01:00
77 lines
2.1 KiB
C++
77 lines
2.1 KiB
C++
#ifndef __SHT4X_H_
|
|
#define __SHT4X_H_
|
|
|
|
#include "Arduino.h"
|
|
#include "Wire.h"
|
|
|
|
#define SHT40_I2C_ADDR_44 0x44
|
|
#define SHT40_I2C_ADDR_45 0x45
|
|
#define SHT41_I2C_ADDR_44 0x44
|
|
#define SHT41_I2C_ADDR_45 0x45
|
|
#define SHT45_I2C_ADDR_44 0x44
|
|
#define SHT45_I2C_ADDR_45 0x45
|
|
|
|
#define SHT4x_DEFAULT_ADDR 0x44 /**< SHT4x I2C Address */
|
|
#define SHT4x_NOHEAT_HIGHPRECISION \
|
|
0xFD /**< High precision measurement, no heater */
|
|
#define SHT4x_NOHEAT_MEDPRECISION \
|
|
0xF6 /**< Medium precision measurement, no heater */
|
|
#define SHT4x_NOHEAT_LOWPRECISION \
|
|
0xE0 /**< Low precision measurement, no heater */
|
|
|
|
#define SHT4x_HIGHHEAT_1S \
|
|
0x39 /**< High precision measurement, high heat for 1 sec */
|
|
#define SHT4x_HIGHHEAT_100MS \
|
|
0x32 /**< High precision measurement, high heat for 0.1 sec */
|
|
#define SHT4x_MEDHEAT_1S \
|
|
0x2F /**< High precision measurement, med heat for 1 sec */
|
|
#define SHT4x_MEDHEAT_100MS \
|
|
0x24 /**< High precision measurement, med heat for 0.1 sec */
|
|
#define SHT4x_LOWHEAT_1S \
|
|
0x1E /**< High precision measurement, low heat for 1 sec */
|
|
#define SHT4x_LOWHEAT_100MS \
|
|
0x15 /**< High precision measurement, low heat for 0.1 sec */
|
|
|
|
#define SHT4x_READSERIAL 0x89 /**< Read Out of Serial Register */
|
|
#define SHT4x_SOFTRESET 0x94 /**< Soft Reset */
|
|
|
|
typedef enum {
|
|
SHT4X_HIGH_PRECISION,
|
|
SHT4X_MED_PRECISION,
|
|
SHT4X_LOW_PRECISION,
|
|
} sht4x_precision_t;
|
|
|
|
/** Optional pre-heater configuration setting */
|
|
typedef enum {
|
|
SHT4X_NO_HEATER,
|
|
SHT4X_HIGH_HEATER_1S,
|
|
SHT4X_HIGH_HEATER_100MS,
|
|
SHT4X_MED_HEATER_1S,
|
|
SHT4X_MED_HEATER_100MS,
|
|
SHT4X_LOW_HEATER_1S,
|
|
SHT4X_LOW_HEATER_100MS,
|
|
} sht4x_heater_t;
|
|
|
|
class SHT4X {
|
|
public:
|
|
bool begin(TwoWire* wire = &Wire, uint8_t addr = SHT40_I2C_ADDR_44);
|
|
bool update(void);
|
|
|
|
float cTemp = 0;
|
|
float humidity = 0;
|
|
|
|
void setPrecision(sht4x_precision_t prec);
|
|
sht4x_precision_t getPrecision(void);
|
|
void setHeater(sht4x_heater_t heat);
|
|
sht4x_heater_t getHeater(void);
|
|
|
|
private:
|
|
TwoWire* _wire;
|
|
uint8_t _addr;
|
|
|
|
sht4x_precision_t _precision = SHT4X_HIGH_PRECISION;
|
|
sht4x_heater_t _heater = SHT4X_NO_HEATER;
|
|
};
|
|
|
|
#endif
|