Y SI / lib_SHT25

Dependents:   lib_SHT25_example

Committer:
YSI
Date:
Tue Dec 11 13:09:18 2018 +0000
Revision:
3:81324c19d870
Parent:
2:34e14b4cd981
Child:
4:21a50575cb79
Add waitSafeHeat

Who changed what in which revision?

UserRevisionLine numberNew contents of line
YSI 0:71da3fbfe141 1 /** SHT25 class
YSI 0:71da3fbfe141 2 *
YSI 0:71da3fbfe141 3 * @purpose library for SHT25 humidity and temperature sensor
YSI 0:71da3fbfe141 4 *
YSI 0:71da3fbfe141 5 * Use to get temperature and humidity
YSI 0:71da3fbfe141 6 *
YSI 0:71da3fbfe141 7 * https://www.sensirion.com/products/humidity-sensor/
YSI 0:71da3fbfe141 8 *
YSI 0:71da3fbfe141 9 * Example:
YSI 0:71da3fbfe141 10 * @code
YSI 0:71da3fbfe141 11 * #include "mbed.h"
YSI 0:71da3fbfe141 12 * #include "lib_SHT25.h"
YSI 0:71da3fbfe141 13 *
YSI 0:71da3fbfe141 14 * Serial pc(USBTX, USBRX);
YSI 3:81324c19d870 15 * SHT25 sensor(I2C_SDA, I2C_SCL);
YSI 0:71da3fbfe141 16 *
YSI 0:71da3fbfe141 17 * int main()
YSI 0:71da3fbfe141 18 * {
YSI 0:71da3fbfe141 19 * float temperature, humidity;
YSI 0:71da3fbfe141 20 * while(1)
YSI 0:71da3fbfe141 21 * {
YSI 3:81324c19d870 22 * temperature = sensor.getTemperature();
YSI 3:81324c19d870 23 * humidity = sensor.getTemperature();
YSI 3:81324c19d870 24 * pc.printf("\r\ntemperature = %6.2f%cC -|- humidity = %6.2f%%RH", temperature, 248, humidity);
YSI 3:81324c19d870 25 * sensor.waitSafeHeat();
YSI 0:71da3fbfe141 26 * sensor.getData(&temperature, &humidity);
YSI 3:81324c19d870 27 * pc.printf("\ntemperature = %6.2f%cC -|- humidity = %6.2f%%RH", temperature, 248, humidity);
YSI 3:81324c19d870 28 * sensor.waitSafeHeat();
YSI 0:71da3fbfe141 29 * }
YSI 0:71da3fbfe141 30 * }
YSI 0:71da3fbfe141 31 * @endcode
YSI 0:71da3fbfe141 32 * @file lib_SHT25.h
YSI 0:71da3fbfe141 33 * @date Jun 2018
YSI 0:71da3fbfe141 34 * @author Yannic Simon
YSI 0:71da3fbfe141 35 */
YSI 0:71da3fbfe141 36 #ifndef SHT25_H
YSI 0:71da3fbfe141 37 #define SHT25_H
YSI 0:71da3fbfe141 38
YSI 0:71da3fbfe141 39 #include "mbed.h"
YSI 0:71da3fbfe141 40
YSI 0:71da3fbfe141 41 #define SHT_I2C_ADDR 0x80 //Sensor I2C address
YSI 0:71da3fbfe141 42 #define SHT_TRIG_TEMP_HOLD 0xE3 //Trigger Temp with hold master
YSI 0:71da3fbfe141 43 #define SHT_TRIG_RH_HOLD 0xE5 //Trigger RH with hold master
YSI 0:71da3fbfe141 44 #define SHT_TRIG_TEMP 0xF3 //Trigger Temp with no hold master
YSI 0:71da3fbfe141 45 #define SHT_TRIG_RH 0xF5 //Trigger RH with no hold master
YSI 0:71da3fbfe141 46 #define SHT_WRITE_REG 0xE6 //Write to user register
YSI 0:71da3fbfe141 47 #define SHT_READ_REG 0xE7 //Read from user register
YSI 0:71da3fbfe141 48 #define SHT_SOFT_RESET 0xFE //Soft reset the sensor
YSI 0:71da3fbfe141 49 #define SHT_SELF_HEATING 0x01 //Keep self heating
YSI 0:71da3fbfe141 50 #define SHT_PREC_1214 0x00 //RH 12 T 14 - default
YSI 0:71da3fbfe141 51 #define SHT_PREC_0812 0x01 //RH 8 T 10
YSI 0:71da3fbfe141 52 #define SHT_PREC_1013 0x80 //RH 10 T 13
YSI 0:71da3fbfe141 53 #define SHT_PREC_1111 0x81 //RH 10 T 13
YSI 2:34e14b4cd981 54 #define SHT_WAIT_TEMP 0x55 //Sensor Temp measure
YSI 2:34e14b4cd981 55 #define SHT_WAIT_RH 0x1D //Sensor RH measure
YSI 2:34e14b4cd981 56 #define SHT_WAIT_SET 0x0F //Sensor (re)set
YSI 0:71da3fbfe141 57
YSI 0:71da3fbfe141 58 /** SHT25 class
YSI 0:71da3fbfe141 59 */
YSI 0:71da3fbfe141 60 class SHT25
YSI 0:71da3fbfe141 61 {
YSI 0:71da3fbfe141 62 public:
YSI 0:71da3fbfe141 63 /** make new SHT25 instance
YSI 0:71da3fbfe141 64 * connected to sda, scl I2C pins
YSI 0:71da3fbfe141 65 *
YSI 0:71da3fbfe141 66 * @param sda I2C pin
YSI 0:71da3fbfe141 67 * @param scl I2C pin
YSI 0:71da3fbfe141 68 */
YSI 0:71da3fbfe141 69 SHT25(PinName sda, PinName scl);
YSI 0:71da3fbfe141 70
YSI 0:71da3fbfe141 71 /** return Temperature(°C) and Humidity
YSI 0:71da3fbfe141 72 *
YSI 1:ebd95757fba4 73 * @param tempC address to return Temperature
YSI 1:ebd95757fba4 74 * @param relHumidity address to return Humidity
YSI 0:71da3fbfe141 75 * @returns none
YSI 0:71da3fbfe141 76 */
YSI 2:34e14b4cd981 77 void getData(float *tempC, float *relHumidity);
YSI 0:71da3fbfe141 78
YSI 0:71da3fbfe141 79 /** return Temperature(°C)
YSI 0:71da3fbfe141 80 *
YSI 0:71da3fbfe141 81 * @param none
YSI 0:71da3fbfe141 82 * @returns Temperature(°C)
YSI 0:71da3fbfe141 83 */
YSI 0:71da3fbfe141 84 float getTemperature(void);
YSI 0:71da3fbfe141 85
YSI 0:71da3fbfe141 86 /** return Humidity
YSI 0:71da3fbfe141 87 *
YSI 0:71da3fbfe141 88 * @param none
YSI 0:71da3fbfe141 89 * @returns Humidity
YSI 0:71da3fbfe141 90 */
YSI 0:71da3fbfe141 91 float getHumidity(void);
YSI 0:71da3fbfe141 92
YSI 0:71da3fbfe141 93 /** set data precision
YSI 0:71da3fbfe141 94 *
YSI 0:71da3fbfe141 95 * @param precision like SHT_PREC_RHTT (SHT_PREC_1214, SHT_PREC_0812, SHT_PREC_1013, SHT_PREC_1111)
YSI 2:34e14b4cd981 96 * @returns true on I2C acknoledge
YSI 0:71da3fbfe141 97 */
YSI 2:34e14b4cd981 98 bool setPrecision(char precision);
YSI 0:71da3fbfe141 99
YSI 0:71da3fbfe141 100 /** soft reset the sensor
YSI 0:71da3fbfe141 101 *
YSI 0:71da3fbfe141 102 * @param none
YSI 2:34e14b4cd981 103 * @returns true on I2C acknoledge
YSI 3:81324c19d870 104 */
YSI 0:71da3fbfe141 105 bool softReset(void);
YSI 3:81324c19d870 106
YSI 3:81324c19d870 107 /** wait safe heat for sensor
YSI 3:81324c19d870 108 *
YSI 3:81324c19d870 109 * @param none
YSI 3:81324c19d870 110 * @returns none
YSI 3:81324c19d870 111 */
YSI 3:81324c19d870 112 void waitSafeHeat(void);
YSI 0:71da3fbfe141 113 protected:
YSI 0:71da3fbfe141 114 I2C _i2c;
YSI 3:81324c19d870 115 Timeout _t, _h;
YSI 0:71da3fbfe141 116 private:
YSI 0:71da3fbfe141 117 void readData(float *, float *);
YSI 0:71da3fbfe141 118 float readTemperature(void);
YSI 0:71da3fbfe141 119 float readHumidity(void);
YSI 3:81324c19d870 120 void keepSafeTemperature(void);
YSI 3:81324c19d870 121 void keepSafeHumidity(void);
YSI 0:71da3fbfe141 122 float _temperature, _humidity;
YSI 3:81324c19d870 123 bool _selfHeatTemperature, _selfHeatHumidity;
YSI 0:71da3fbfe141 124 };
YSI 0:71da3fbfe141 125
YSI 0:71da3fbfe141 126 #endif