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 #ifndef SI7021_H
irsanjul 0:d3514bc63a39 2 #define SI7021_H
irsanjul 0:d3514bc63a39 3
irsanjul 0:d3514bc63a39 4 #include "mbed.h"
irsanjul 0:d3514bc63a39 5
irsanjul 0:d3514bc63a39 6 /** Si7012 Read Temperature Command */
irsanjul 0:d3514bc63a39 7 #define READ_TEMP 0xE0 /* Read previous T data from RH measurement command*/
irsanjul 0:d3514bc63a39 8 /** Si7012 Read RH Command */
irsanjul 0:d3514bc63a39 9 #define READ_RH 0xE5 /* Perform RH (and T) measurement. */
irsanjul 0:d3514bc63a39 10
irsanjul 0:d3514bc63a39 11 /** Si7012 Read ID */
irsanjul 0:d3514bc63a39 12 #define READ_ID1_1 0xFA
irsanjul 0:d3514bc63a39 13 #define READ_ID1_2 0x0F
irsanjul 0:d3514bc63a39 14 #define READ_ID2_1 0xFC
irsanjul 0:d3514bc63a39 15 #define READ_ID2_2 0xC9
irsanjul 0:d3514bc63a39 16
irsanjul 0:d3514bc63a39 17 /** Si7012 Read Firmware Revision */
irsanjul 0:d3514bc63a39 18 #define READ_FWREV_1 0x84
irsanjul 0:d3514bc63a39 19 #define READ_FWREV_2 0xB8
irsanjul 0:d3514bc63a39 20
irsanjul 0:d3514bc63a39 21 /** I2C device address for Si7021 */
irsanjul 0:d3514bc63a39 22 #define ADDR 0x80
irsanjul 0:d3514bc63a39 23
irsanjul 0:d3514bc63a39 24 /** I2C device frequency for Si7021 */
irsanjul 0:d3514bc63a39 25 #define FREQ 100000
irsanjul 0:d3514bc63a39 26
irsanjul 0:d3514bc63a39 27 /** Device ID value for Si7021 */
irsanjul 0:d3514bc63a39 28 #define DEVICE_ID 0x15
irsanjul 0:d3514bc63a39 29
irsanjul 0:d3514bc63a39 30 class Si7021
irsanjul 0:d3514bc63a39 31 {
irsanjul 0:d3514bc63a39 32 public:
irsanjul 0:d3514bc63a39 33 Si7021(PinName sda, PinName scl);
irsanjul 0:d3514bc63a39 34 ~Si7021();
irsanjul 0:d3514bc63a39 35
irsanjul 0:d3514bc63a39 36 /*
irsanjul 0:d3514bc63a39 37 * Get last measured temperature data
irsanjul 0:d3514bc63a39 38 * return: int32_t = temperature in millidegrees centigrade
irsanjul 0:d3514bc63a39 39 */
irsanjul 0:d3514bc63a39 40 int32_t get_temperature();
irsanjul 0:d3514bc63a39 41
irsanjul 0:d3514bc63a39 42 /*
irsanjul 0:d3514bc63a39 43 * Get last measured relative humidity data
irsanjul 0:d3514bc63a39 44 * return: uint32_t = relative humidity value in milli-percent
irsanjul 0:d3514bc63a39 45 */
irsanjul 0:d3514bc63a39 46 uint32_t get_humidity();
irsanjul 0:d3514bc63a39 47
irsanjul 0:d3514bc63a39 48 /*
irsanjul 0:d3514bc63a39 49 * Perform measurement.
irsanjul 0:d3514bc63a39 50 * Asynchronous callback can be provided (type void (*)(void)).
irsanjul 0:d3514bc63a39 51 * return: 0 if successful, else one of the defined error codes.
irsanjul 0:d3514bc63a39 52 */
irsanjul 0:d3514bc63a39 53 bool measure();
irsanjul 0:d3514bc63a39 54
irsanjul 0:d3514bc63a39 55 /*
irsanjul 0:d3514bc63a39 56 * Check if the sensor is active and responding. This will update the get_active value.
irsanjul 0:d3514bc63a39 57 * Asynchronous callback can be provided (type void (*)(void)).
irsanjul 0:d3514bc63a39 58 * return: 0 if successful, else one of the defined error codes.
irsanjul 0:d3514bc63a39 59 */
irsanjul 0:d3514bc63a39 60 bool check();
irsanjul 0:d3514bc63a39 61
irsanjul 0:d3514bc63a39 62 private:
irsanjul 0:d3514bc63a39 63 I2C i2c;
irsanjul 0:d3514bc63a39 64
irsanjul 0:d3514bc63a39 65 uint8_t rx_buff[8];
irsanjul 0:d3514bc63a39 66 uint8_t tx_buff[2];
irsanjul 0:d3514bc63a39 67
irsanjul 0:d3514bc63a39 68 uint32_t rhData;
irsanjul 0:d3514bc63a39 69 int32_t tData;
irsanjul 0:d3514bc63a39 70 };
irsanjul 0:d3514bc63a39 71
irsanjul 0:d3514bc63a39 72 #endif