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
Si7021.h@0:d3514bc63a39, 2016-01-22 (annotated)
- 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?
User | Revision | Line number | New 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 |