From 9a2ca63d8c7e1f51d0a28dc90fe40bb7eba5f211 Mon Sep 17 00:00:00 2001 From: Skymaker Date: Fri, 8 Jan 2021 19:07:28 +0100 Subject: [PATCH] added setHeaterLevel function --- src/HTU21D.cpp | 27 +++++++++++++++++++++++++++ src/HTU21D.h | 1 + 2 files changed, 28 insertions(+) diff --git a/src/HTU21D.cpp b/src/HTU21D.cpp index 6dcbe12..87a8e79 100644 --- a/src/HTU21D.cpp +++ b/src/HTU21D.cpp @@ -186,6 +186,33 @@ void HTU21D::setHeater(HTU21D_HEATER_SWITCH heaterSwitch) write8(HTU21D_USER_REGISTER_WRITE, userRegisterData); } +/**************************************************************************/ +/* + setHeaterLevel() + + Set the Heater level (between 3.09 mA and 94.20 mA, see datasheet) + + NOTE: + - prolonged exposure to high humidity will result gradual upward drift + of the RH reading, the heater is used to drive off condensation & + reverse drift effect. + - heater consumtion is 3.09mA - 94.20mA @ 3.3v. +*/ +/**************************************************************************/ +void HTU21D::setHeaterLevel(byte heaterLevel) +{ + uint8_t heaterRegisterData = 0; + + heaterRegisterData = read8(HTU21D_HEATER_REGISTER_READ); + + heaterLevel &= 0x0F; + heaterRegisterData &= 0xF0; + heaterRegisterData |= heaterLevel; + + write8(HTU21D_HEATER_REGISTER_WRITE, heaterRegisterData); +} + + /**************************************************************************/ /* readHumidity() diff --git a/src/HTU21D.h b/src/HTU21D.h index 9c5df82..4e0e7d9 100644 --- a/src/HTU21D.h +++ b/src/HTU21D.h @@ -133,6 +133,7 @@ class HTU21D void softReset(void); bool batteryStatus(void); void setHeater(HTU21D_HEATER_SWITCH heaterSwitch); + void setHeaterLevel(byte heaterLevel); uint16_t readDeviceID(void); uint8_t readFirmwareVersion(void);