Y SI / lib_SHT25

Dependents:   lib_SHT25_example

Committer:
YSI
Date:
Mon Jun 18 08:28:52 2018 +0000
Revision:
1:ebd95757fba4
Parent:
0:71da3fbfe141
Child:
2:34e14b4cd981
Doc updated

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 0:71da3fbfe141 15 * SHT25 sensor(p28, p27);
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 0:71da3fbfe141 22 * sensor.getData(&temperature, &humidity);
YSI 0:71da3fbfe141 23 * pc.printf("\rtemperature = %6.2f%cC -|- humidity = %6.2f%%RH", temperature, 248, humidity);
YSI 0:71da3fbfe141 24 * wait(0.5);
YSI 0:71da3fbfe141 25 * }
YSI 0:71da3fbfe141 26 * }
YSI 0:71da3fbfe141 27 * @endcode
YSI 0:71da3fbfe141 28 * @file lib_SHT25.h
YSI 0:71da3fbfe141 29 * @date Jun 2018
YSI 0:71da3fbfe141 30 * @author Yannic Simon
YSI 0:71da3fbfe141 31 */
YSI 0:71da3fbfe141 32 #ifndef SHT25_H
YSI 0:71da3fbfe141 33 #define SHT25_H
YSI 0:71da3fbfe141 34
YSI 0:71da3fbfe141 35 #include "mbed.h"
YSI 0:71da3fbfe141 36
YSI 0:71da3fbfe141 37 #define SHT_I2C_ADDR 0x80 //Sensor I2C address
YSI 0:71da3fbfe141 38 #define SHT_TRIG_TEMP_HOLD 0xE3 //Trigger Temp with hold master
YSI 0:71da3fbfe141 39 #define SHT_TRIG_RH_HOLD 0xE5 //Trigger RH with hold master
YSI 0:71da3fbfe141 40 #define SHT_TRIG_TEMP 0xF3 //Trigger Temp with no hold master
YSI 0:71da3fbfe141 41 #define SHT_TRIG_RH 0xF5 //Trigger RH with no hold master
YSI 0:71da3fbfe141 42 #define SHT_WRITE_REG 0xE6 //Write to user register
YSI 0:71da3fbfe141 43 #define SHT_READ_REG 0xE7 //Read from user register
YSI 0:71da3fbfe141 44 #define SHT_SOFT_RESET 0xFE //Soft reset the sensor
YSI 0:71da3fbfe141 45 #define SHT_SELF_HEATING 0x01 //Keep self heating
YSI 0:71da3fbfe141 46 #define SHT_PREC_1214 0x00 //RH 12 T 14 - default
YSI 0:71da3fbfe141 47 #define SHT_PREC_0812 0x01 //RH 8 T 10
YSI 0:71da3fbfe141 48 #define SHT_PREC_1013 0x80 //RH 10 T 13
YSI 0:71da3fbfe141 49 #define SHT_PREC_1111 0x81 //RH 10 T 13
YSI 0:71da3fbfe141 50
YSI 0:71da3fbfe141 51 /** SHT25 class
YSI 0:71da3fbfe141 52 */
YSI 0:71da3fbfe141 53 class SHT25
YSI 0:71da3fbfe141 54 {
YSI 0:71da3fbfe141 55 public:
YSI 0:71da3fbfe141 56 /** make new SHT25 instance
YSI 0:71da3fbfe141 57 * connected to sda, scl I2C pins
YSI 0:71da3fbfe141 58 *
YSI 0:71da3fbfe141 59 * @param sda I2C pin
YSI 0:71da3fbfe141 60 * @param scl I2C pin
YSI 0:71da3fbfe141 61 */
YSI 0:71da3fbfe141 62 SHT25(PinName sda, PinName scl);
YSI 0:71da3fbfe141 63
YSI 0:71da3fbfe141 64 /** return Temperature(°C) and Humidity
YSI 0:71da3fbfe141 65 *
YSI 1:ebd95757fba4 66 * @param tempC address to return Temperature
YSI 1:ebd95757fba4 67 * @param relHumidity address to return Humidity
YSI 0:71da3fbfe141 68 * @returns none
YSI 0:71da3fbfe141 69 */
YSI 1:ebd95757fba4 70 void getData(float *tempC, float *relHumidity)
YSI 0:71da3fbfe141 71
YSI 0:71da3fbfe141 72 /** return Temperature(°C)
YSI 0:71da3fbfe141 73 *
YSI 0:71da3fbfe141 74 * @param none
YSI 0:71da3fbfe141 75 * @returns Temperature(°C)
YSI 0:71da3fbfe141 76 */
YSI 0:71da3fbfe141 77 float getTemperature(void);
YSI 0:71da3fbfe141 78
YSI 0:71da3fbfe141 79 /** return Humidity
YSI 0:71da3fbfe141 80 *
YSI 0:71da3fbfe141 81 * @param none
YSI 0:71da3fbfe141 82 * @returns Humidity
YSI 0:71da3fbfe141 83 */
YSI 0:71da3fbfe141 84 float getHumidity(void);
YSI 0:71da3fbfe141 85
YSI 0:71da3fbfe141 86 /** set data precision
YSI 0:71da3fbfe141 87 *
YSI 0:71da3fbfe141 88 * @param precision like SHT_PREC_RHTT (SHT_PREC_1214, SHT_PREC_0812, SHT_PREC_1013, SHT_PREC_1111)
YSI 0:71da3fbfe141 89 * @returns I2C acknoledge
YSI 0:71da3fbfe141 90 */
YSI 0:71da3fbfe141 91 int setPrecision(char precision);
YSI 0:71da3fbfe141 92
YSI 0:71da3fbfe141 93 /** soft reset the sensor
YSI 0:71da3fbfe141 94 *
YSI 0:71da3fbfe141 95 * @param none
YSI 0:71da3fbfe141 96 * @returns boolean on I2C acknoledge
YSI 0:71da3fbfe141 97 */
YSI 0:71da3fbfe141 98 bool softReset(void);
YSI 0:71da3fbfe141 99 protected:
YSI 0:71da3fbfe141 100 I2C _i2c;
YSI 0:71da3fbfe141 101 Timeout _t;
YSI 0:71da3fbfe141 102 private:
YSI 0:71da3fbfe141 103 void readData(float *, float *);
YSI 0:71da3fbfe141 104 float readTemperature(void);
YSI 0:71da3fbfe141 105 float readHumidity(void);
YSI 0:71da3fbfe141 106 void keepSelf(void);
YSI 0:71da3fbfe141 107 float _temperature, _humidity;
YSI 0:71da3fbfe141 108 bool _selfHeat;
YSI 0:71da3fbfe141 109 };
YSI 0:71da3fbfe141 110
YSI 0:71da3fbfe141 111 #endif