Lib for HYT temp & humidity sensor

Dependents:   HYT_example Temp_&_RH_at_TFT-demo Temp_&_RH_at_TFT_with_touchscreen Temp_&_RH_at_TFT_with_touchscreen-ENG ... more

Fork of HYT by Ksenia Kondrashova

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers HYT.cpp Source File

HYT.cpp

00001 #include "HYT.h"
00002 #include "mbed.h"
00003 
00004 HYT::HYT(PinName sda, PinName scl) : _i2c(sda, scl)
00005 {
00006 }
00007 
00008 /*************************************************************************************************************************/
00009 void HYT::MRCommand(void)
00010 {
00011     _i2c.write(HYT_ADDR, 0, 0);
00012 }
00013 
00014 
00015 /*************************************************************************************************************************/
00016 int HYT::DFCommand(void)
00017 {
00018     char    dataI2C[4];
00019     int     stateBit;
00020     int     humidityRaw;
00021     int     temperatureRaw;
00022 
00023     _i2c.read(HYT_ADDR, dataI2C, 4);
00024 
00025     stateBit = (dataI2C[0] & 0x40) >> 6;
00026     if (stateBit == 0) {
00027         humidityRaw = ((dataI2C[0] & 0x3F) << 8) | dataI2C[1];
00028         temperatureRaw = ((dataI2C[2] << 8) | dataI2C[3]) >> 2;
00029         if (temperatureRaw < 0x3FFF && humidityRaw < 0x3FFF) {
00030             temperature = ((float)(temperatureRaw) * 165.0f / 16383.0f) - 40.0f;
00031             humidity = (float)humidityRaw * 100.0f / 16383.0f;
00032         } else {
00033             // sensor returns wrong data (1111...11)
00034             return -1;
00035         }
00036     } else {
00037         // no new value received from sensor
00038         return 0;    
00039     } 
00040     
00041     return 0;
00042 }