Library of Temperature/Humidity Sensor from Silicon Labs for LPC1768 Editing from SILABS_RHT library

Dependents:   F-CubeSatKit4 Xbee-Smart-Home-Inside TBSense2_Sensor_Demo TempHuminitysensor ... more

Committer:
irsanjul
Date:
Fri Jan 22 08:56:27 2016 +0000
Revision:
0:d3514bc63a39
Library of Temperature/Humidity Sensor from Silicon Labs for LPC1768; Editing from SILABS_RHT library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
irsanjul 0:d3514bc63a39 1 #include "Si7021.h"
irsanjul 0:d3514bc63a39 2
irsanjul 0:d3514bc63a39 3 Si7021::Si7021(PinName sda, PinName scl):i2c(sda, scl)
irsanjul 0:d3514bc63a39 4 {
irsanjul 0:d3514bc63a39 5 i2c.frequency(FREQ);
irsanjul 0:d3514bc63a39 6 }
irsanjul 0:d3514bc63a39 7
irsanjul 0:d3514bc63a39 8 Si7021::~Si7021()
irsanjul 0:d3514bc63a39 9 {
irsanjul 0:d3514bc63a39 10
irsanjul 0:d3514bc63a39 11 }
irsanjul 0:d3514bc63a39 12
irsanjul 0:d3514bc63a39 13 int32_t Si7021::get_temperature()
irsanjul 0:d3514bc63a39 14 {
irsanjul 0:d3514bc63a39 15 return tData;
irsanjul 0:d3514bc63a39 16 }
irsanjul 0:d3514bc63a39 17
irsanjul 0:d3514bc63a39 18 uint32_t Si7021::get_humidity()
irsanjul 0:d3514bc63a39 19 {
irsanjul 0:d3514bc63a39 20 return rhData;
irsanjul 0:d3514bc63a39 21 }
irsanjul 0:d3514bc63a39 22
irsanjul 0:d3514bc63a39 23 bool Si7021::measure()
irsanjul 0:d3514bc63a39 24 {
irsanjul 0:d3514bc63a39 25 tx_buff[0] = READ_RH;
irsanjul 0:d3514bc63a39 26 if(i2c.write(ADDR, (char*)tx_buff, 1) != 0) return 0;
irsanjul 0:d3514bc63a39 27 if(i2c.read(ADDR, (char*)rx_buff, 2) != 0) return 0;
irsanjul 0:d3514bc63a39 28
irsanjul 0:d3514bc63a39 29 rhData = ((uint32_t)rx_buff[0] << 8) + (rx_buff[1] & 0xFC);
irsanjul 0:d3514bc63a39 30 rhData = (((rhData) * 15625L) >> 13) - 6000;
irsanjul 0:d3514bc63a39 31
irsanjul 0:d3514bc63a39 32 tx_buff[0] = READ_TEMP;
irsanjul 0:d3514bc63a39 33 if(i2c.write(ADDR, (char*)tx_buff, 1) != 0) return 0;
irsanjul 0:d3514bc63a39 34 if(i2c.read(ADDR, (char*)rx_buff, 2) != 0) return 0;
irsanjul 0:d3514bc63a39 35
irsanjul 0:d3514bc63a39 36 tData = ((uint32_t)rx_buff[0] << 8) + (rx_buff[1] & 0xFC);
irsanjul 0:d3514bc63a39 37 tData = (((tData) * 21965L) >> 13) - 46850;
irsanjul 0:d3514bc63a39 38
irsanjul 0:d3514bc63a39 39 return 1;
irsanjul 0:d3514bc63a39 40 }
irsanjul 0:d3514bc63a39 41
irsanjul 0:d3514bc63a39 42 bool Si7021::check()
irsanjul 0:d3514bc63a39 43 {
irsanjul 0:d3514bc63a39 44 tx_buff[0] = READ_ID2_1;
irsanjul 0:d3514bc63a39 45 tx_buff[1] = READ_ID2_2;
irsanjul 0:d3514bc63a39 46 if(i2c.write(ADDR, (char*)tx_buff, 2) != 0) return 0;
irsanjul 0:d3514bc63a39 47 if(i2c.read(ADDR, (char*)rx_buff, 8) != 0) return 0;
irsanjul 0:d3514bc63a39 48
irsanjul 0:d3514bc63a39 49 if(rx_buff[0] == DEVICE_ID)
irsanjul 0:d3514bc63a39 50 return true;
irsanjul 0:d3514bc63a39 51 else return 0;
irsanjul 0:d3514bc63a39 52 }