SHT21 & SHT25 humidity and temperature sensors

Dependents:   Mt05_MtSense01

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?

UserRevisionLine numberNew 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