frederic blanc
/
MAX31850_HelloWorld
test MAX31850
Diff: SHTxx/shtlib.cpp
- Revision:
- 0:55f2866e9c0c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SHTxx/shtlib.cpp Tue May 27 15:01:13 2014 +0000 @@ -0,0 +1,47 @@ +#include "shtlib.h" + +int sht_writefile(SHT75 sht,float *ptr_temperature,float *ptr_humidity) { + float humi_f,rh_lin,rh_true; // working registers for Illustration purposes + int t; // temporary store for the temp ticks + int h; // temp store for the humidity ticks + sht.readTempTicks(&t); + *ptr_temperature = ((float)(t) * SHT_D2) + SHT_D1; + sht.readHumidityTicks(&h); + humi_f = (float)(h); + rh_lin = SHT_C3 * humi_f * humi_f + SHT_C2 * humi_f + SHT_C1; + rh_true=(((*ptr_temperature/100)-25)*(SHT_T1+SHT_T2*humi_f)+rh_lin); + if (rh_true>100)rh_true=-1; //cut if the value is outside + if (rh_true<1)rh_true=-1; //the physical possible range + *ptr_humidity = rh_true; + return 0; +} + + +int sht_init(SHT75 sht, const char *hwAddr, char *text_temp, char *text_humi) { + int t; + char shtcode[9]; + sht.reset(); + if (sht.readTempTicks(&t)==true) { + shtcode[7]=hwAddr[5]; + shtcode[6]=hwAddr[4]; + shtcode[5]=hwAddr[3]; + shtcode[4]=hwAddr[2]; + shtcode[3]=hwAddr[1]; + shtcode[2]=hwAddr[0]; + shtcode[1]=0x00; + shtcode[0]=0x80; //famille SHT_temp + shtcode[8]=crc8((uint8_t*)&shtcode[0],8); + sprintf(text_temp,"%02X%02X%02X%02X%02X%02X%02X%02X%02X", + shtcode[0], shtcode[1], shtcode[2], + shtcode[3], shtcode[4], shtcode[5], + shtcode[6], shtcode[7], shtcode[8]); + shtcode[0]=0x81; //famille SHT_humi + shtcode[8]=crc8((uint8_t*)&shtcode[0],8); + sprintf(text_humi,"%02X%02X%02X%02X%02X%02X%02X%02X%02X", + shtcode[0], shtcode[1], shtcode[2], + shtcode[3], shtcode[4], shtcode[5], + shtcode[6], shtcode[7], shtcode[8]); + return true; //sht present + } + return false;//sht absent +} \ No newline at end of file