Y SI / lib_SHT25

Dependents:   lib_SHT25_example

Committer:
YSI
Date:
Mon Jun 18 12:10:49 2018 +0000
Revision:
2:34e14b4cd981
Parent:
1:ebd95757fba4
Child:
3:81324c19d870
Add NaN return on I2C error

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 2:34e14b4cd981 50 #define SHT_WAIT_TEMP 0x55 //Sensor Temp measure
YSI 2:34e14b4cd981 51 #define SHT_WAIT_RH 0x1D //Sensor RH measure
YSI 2:34e14b4cd981 52 #define SHT_WAIT_SET 0x0F //Sensor (re)set
YSI 0:71da3fbfe141 53
YSI 0:71da3fbfe141 54 /** SHT25 class
YSI 0:71da3fbfe141 55 */
YSI 0:71da3fbfe141 56 class SHT25
YSI 0:71da3fbfe141 57 {
YSI 0:71da3fbfe141 58 public:
YSI 0:71da3fbfe141 59 /** make new SHT25 instance
YSI 0:71da3fbfe141 60 * connected to sda, scl I2C pins
YSI 0:71da3fbfe141 61 *
YSI 0:71da3fbfe141 62 * @param sda I2C pin
YSI 0:71da3fbfe141 63 * @param scl I2C pin
YSI 0:71da3fbfe141 64 */
YSI 0:71da3fbfe141 65 SHT25(PinName sda, PinName scl);
YSI 0:71da3fbfe141 66
YSI 0:71da3fbfe141 67 /** return Temperature(°C) and Humidity
YSI 0:71da3fbfe141 68 *
YSI 1:ebd95757fba4 69 * @param tempC address to return Temperature
YSI 1:ebd95757fba4 70 * @param relHumidity address to return Humidity
YSI 0:71da3fbfe141 71 * @returns none
YSI 0:71da3fbfe141 72 */
YSI 2:34e14b4cd981 73 void getData(float *tempC, float *relHumidity);
YSI 0:71da3fbfe141 74
YSI 0:71da3fbfe141 75 /** return Temperature(°C)
YSI 0:71da3fbfe141 76 *
YSI 0:71da3fbfe141 77 * @param none
YSI 0:71da3fbfe141 78 * @returns Temperature(°C)
YSI 0:71da3fbfe141 79 */
YSI 0:71da3fbfe141 80 float getTemperature(void);
YSI 0:71da3fbfe141 81
YSI 0:71da3fbfe141 82 /** return Humidity
YSI 0:71da3fbfe141 83 *
YSI 0:71da3fbfe141 84 * @param none
YSI 0:71da3fbfe141 85 * @returns Humidity
YSI 0:71da3fbfe141 86 */
YSI 0:71da3fbfe141 87 float getHumidity(void);
YSI 0:71da3fbfe141 88
YSI 0:71da3fbfe141 89 /** set data precision
YSI 0:71da3fbfe141 90 *
YSI 0:71da3fbfe141 91 * @param precision like SHT_PREC_RHTT (SHT_PREC_1214, SHT_PREC_0812, SHT_PREC_1013, SHT_PREC_1111)
YSI 2:34e14b4cd981 92 * @returns true on I2C acknoledge
YSI 0:71da3fbfe141 93 */
YSI 2:34e14b4cd981 94 bool setPrecision(char precision);
YSI 0:71da3fbfe141 95
YSI 0:71da3fbfe141 96 /** soft reset the sensor
YSI 0:71da3fbfe141 97 *
YSI 0:71da3fbfe141 98 * @param none
YSI 2:34e14b4cd981 99 * @returns true on I2C acknoledge
YSI 0:71da3fbfe141 100 */
YSI 0:71da3fbfe141 101 bool softReset(void);
YSI 0:71da3fbfe141 102 protected:
YSI 0:71da3fbfe141 103 I2C _i2c;
YSI 0:71da3fbfe141 104 Timeout _t;
YSI 0:71da3fbfe141 105 private:
YSI 0:71da3fbfe141 106 void readData(float *, float *);
YSI 0:71da3fbfe141 107 float readTemperature(void);
YSI 0:71da3fbfe141 108 float readHumidity(void);
YSI 0:71da3fbfe141 109 void keepSelf(void);
YSI 0:71da3fbfe141 110 float _temperature, _humidity;
YSI 0:71da3fbfe141 111 bool _selfHeat;
YSI 0:71da3fbfe141 112 };
YSI 0:71da3fbfe141 113
YSI 0:71da3fbfe141 114 #endif