SHT21 & SHT25 humidity and temperature sensors
SHT2X.h@1:f9e3348b41a2, 2018-04-27 (annotated)
- Committer:
- johnathanlyu
- Date:
- Fri Apr 27 09:44:28 2018 +0000
- Revision:
- 1:f9e3348b41a2
- Parent:
- 0:f5f628a42ba8
update library initial flow
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
johnathanlyu | 0:f5f628a42ba8 | 1 | #ifndef SHT2X_H |
johnathanlyu | 0:f5f628a42ba8 | 2 | #define SHT2X_H |
johnathanlyu | 0:f5f628a42ba8 | 3 | |
johnathanlyu | 0:f5f628a42ba8 | 4 | /* |
johnathanlyu | 0:f5f628a42ba8 | 5 | * Constants used in communication |
johnathanlyu | 0:f5f628a42ba8 | 6 | * |
johnathanlyu | 0:f5f628a42ba8 | 7 | * Refer to datasheet for full explanation |
johnathanlyu | 0:f5f628a42ba8 | 8 | */ |
johnathanlyu | 0:f5f628a42ba8 | 9 | |
johnathanlyu | 0:f5f628a42ba8 | 10 | //Sensor I2C address |
johnathanlyu | 0:f5f628a42ba8 | 11 | #define SHT_I2C_ADDR 0x80 |
johnathanlyu | 0:f5f628a42ba8 | 12 | |
johnathanlyu | 0:f5f628a42ba8 | 13 | //Commands... |
johnathanlyu | 0:f5f628a42ba8 | 14 | //Trigger Temp with hold master |
johnathanlyu | 0:f5f628a42ba8 | 15 | #define SHT_TRIG_TEMP_HOLD 0xE3 |
johnathanlyu | 0:f5f628a42ba8 | 16 | //Trigger RH with hold master |
johnathanlyu | 0:f5f628a42ba8 | 17 | #define SHT_TRIG_RH_HOLD 0xE5 |
johnathanlyu | 0:f5f628a42ba8 | 18 | //Trigger Temp with no hold master |
johnathanlyu | 0:f5f628a42ba8 | 19 | #define SHT_TRIG_TEMP 0xF3 |
johnathanlyu | 0:f5f628a42ba8 | 20 | //Trigger RH with no hold master |
johnathanlyu | 0:f5f628a42ba8 | 21 | #define SHT_TRIG_RH 0xF5 |
johnathanlyu | 0:f5f628a42ba8 | 22 | //Write to user register |
johnathanlyu | 0:f5f628a42ba8 | 23 | #define SHT_WRITE_REG 0xE6 |
johnathanlyu | 0:f5f628a42ba8 | 24 | //Read from user register |
johnathanlyu | 0:f5f628a42ba8 | 25 | #define SHT_READ_REG 0xE7 |
johnathanlyu | 0:f5f628a42ba8 | 26 | //Soft reset the sensor |
johnathanlyu | 0:f5f628a42ba8 | 27 | #define SHT_SOFT_RESET 0xFE |
johnathanlyu | 0:f5f628a42ba8 | 28 | |
johnathanlyu | 0:f5f628a42ba8 | 29 | //User Register information |
johnathanlyu | 0:f5f628a42ba8 | 30 | |
johnathanlyu | 0:f5f628a42ba8 | 31 | //Data precision settings |
johnathanlyu | 0:f5f628a42ba8 | 32 | //RH 12 T 14 - default |
johnathanlyu | 0:f5f628a42ba8 | 33 | #define SHT_PREC_1214 0x00 |
johnathanlyu | 0:f5f628a42ba8 | 34 | //RH 8 T 10 |
johnathanlyu | 0:f5f628a42ba8 | 35 | #define SHT_PREC_0812 0x01 |
johnathanlyu | 0:f5f628a42ba8 | 36 | //RH 10 T 13 |
johnathanlyu | 0:f5f628a42ba8 | 37 | #define SHT_PREC_1013 0x80 |
johnathanlyu | 0:f5f628a42ba8 | 38 | //RH 11 T 11 |
johnathanlyu | 0:f5f628a42ba8 | 39 | #define SHT_PREC_1111 0x81 |
johnathanlyu | 0:f5f628a42ba8 | 40 | |
johnathanlyu | 0:f5f628a42ba8 | 41 | //Battery status |
johnathanlyu | 0:f5f628a42ba8 | 42 | #define SHT_BATTERY_STAT 0x40 |
johnathanlyu | 0:f5f628a42ba8 | 43 | //Enable on chip heater |
johnathanlyu | 0:f5f628a42ba8 | 44 | #define SHT_HEATER 0x04 |
johnathanlyu | 0:f5f628a42ba8 | 45 | //Disable OTP reload |
johnathanlyu | 0:f5f628a42ba8 | 46 | #define SHT_DISABLE_OTP 0x02 |
johnathanlyu | 0:f5f628a42ba8 | 47 | |
johnathanlyu | 0:f5f628a42ba8 | 48 | |
johnathanlyu | 0:f5f628a42ba8 | 49 | //Fail conditions on the I2C bus |
johnathanlyu | 0:f5f628a42ba8 | 50 | #define SHT_FAIL 1 |
johnathanlyu | 0:f5f628a42ba8 | 51 | #define SHT_SUCCESS 0 |
johnathanlyu | 0:f5f628a42ba8 | 52 | |
johnathanlyu | 0:f5f628a42ba8 | 53 | //Author fail conditions |
johnathanlyu | 0:f5f628a42ba8 | 54 | //1, 2, 3 can be used because these are status bits |
johnathanlyu | 0:f5f628a42ba8 | 55 | //in the received measurement value |
johnathanlyu | 0:f5f628a42ba8 | 56 | #define SHT_GOOD 0xFFFC |
johnathanlyu | 0:f5f628a42ba8 | 57 | #define SHT_TRIG_FAIL 1 |
johnathanlyu | 0:f5f628a42ba8 | 58 | #define SHT_READ_FAIL 2 |
johnathanlyu | 0:f5f628a42ba8 | 59 | |
johnathanlyu | 0:f5f628a42ba8 | 60 | #include "mbed.h" |
johnathanlyu | 0:f5f628a42ba8 | 61 | |
johnathanlyu | 0:f5f628a42ba8 | 62 | class SHT2X { |
johnathanlyu | 0:f5f628a42ba8 | 63 | public: |
johnathanlyu | 1:f9e3348b41a2 | 64 | SHT2X(I2C& i2c, Serial& pc); |
johnathanlyu | 0:f5f628a42ba8 | 65 | int readData(float *tempC, float *relHumidty); |
johnathanlyu | 0:f5f628a42ba8 | 66 | int measureTemperature(float *tempC); |
johnathanlyu | 0:f5f628a42ba8 | 67 | int measureHumidty(float *relHumidty); |
johnathanlyu | 0:f5f628a42ba8 | 68 | int setPrecision(char precision); |
johnathanlyu | 0:f5f628a42ba8 | 69 | bool softRest(); |
johnathanlyu | 0:f5f628a42ba8 | 70 | protected: |
johnathanlyu | 0:f5f628a42ba8 | 71 | I2C m_i2c; |
johnathanlyu | 1:f9e3348b41a2 | 72 | Serial m_pc; |
johnathanlyu | 0:f5f628a42ba8 | 73 | private: |
johnathanlyu | 0:f5f628a42ba8 | 74 | |
johnathanlyu | 0:f5f628a42ba8 | 75 | }; |
johnathanlyu | 0:f5f628a42ba8 | 76 | |
johnathanlyu | 0:f5f628a42ba8 | 77 | #endif |