little modification for best utilization
Fork of Sht31 by
Revision 3:c4bd8cd5d566, committed 2018-10-03
- Comitter:
- osilvam
- Date:
- Wed Oct 03 13:51:56 2018 +0000
- Parent:
- 2:c84a60326ecf
- Commit message:
- first commit
Changed in this revision
Sht31.cpp | Show annotated file Show diff for this revision Revisions of this file |
Sht31.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/Sht31.cpp Mon Sep 11 13:51:03 2017 +0000 +++ b/Sht31.cpp Wed Oct 03 13:51:56 2018 +0000 @@ -17,8 +17,8 @@ #include "Sht31.h" #include "mbed.h" -Sht31::Sht31(PinName sda, PinName scl) : _i2c(sda, scl) { - _i2caddr = (0x44 << 1); +Sht31::Sht31(PinName sda, PinName scl, bool i2caddr) : _i2c(sda, scl) { + _i2caddr = !i2caddr ? (0x44 << 1) : (0x45 << 1); reset(); readStatus(); } @@ -97,6 +97,50 @@ return true; } + +bool Sht31::readTempHum(float &_temp, float &_humidity) { + char readbuffer[6]; + + writeCommand(SHT31_MEAS_HIGHREP); + + wait_ms(500); + _i2c.read(_i2caddr, readbuffer, 6); + + uint16_t ST, SRH; + ST = readbuffer[0]; + ST <<= 8; + ST |= readbuffer[1]; + + if (readbuffer[2] != crc8((uint8_t *) readbuffer, 2)) { + return false; + } + + SRH = readbuffer[3]; + SRH <<= 8; + SRH |= readbuffer[4]; + + if (readbuffer[5] != crc8((uint8_t *) readbuffer+3, 2)) { + return false; + } + + double stemp = ST; + stemp *= 175; + stemp /= 0xffff; + stemp = -45 + stemp; + temp = stemp; + _temp = temp; + + double shum = SRH; + shum *= 100; + shum /= 0xFFFF; + + humidity = shum; + _humidity = humidity; + + return true; +} + + uint8_t Sht31::crc8(const uint8_t *data, int len) { const uint8_t POLYNOMIAL(0x31); uint8_t crc(0xFF);
--- a/Sht31.h Mon Sep 11 13:51:03 2017 +0000 +++ b/Sht31.h Wed Oct 03 13:51:56 2018 +0000 @@ -34,9 +34,10 @@ class Sht31 { public: - Sht31(PinName sda, PinName scl); + Sht31(PinName sda, PinName scl, bool i2caddr); float readTemperature(void); float readHumidity(void); + bool readTempHum(float &_temp, float &_humidity); private: void reset(void);