mbed library to use a SENSIRION SHT1x/SHT7x sensor humidity and temperature

Committer:
okini3939
Date:
Thu Jun 21 03:56:43 2012 +0000
Revision:
0:ad72ec3d85e8

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 0:ad72ec3d85e8 1 /*
okini3939 0:ad72ec3d85e8 2 * mbed library to use a SENSIRION SHT1x/SHT7x sensor
okini3939 0:ad72ec3d85e8 3 * Copyright (c) 2011 Hiroshi Suga
okini3939 0:ad72ec3d85e8 4 * Released under the MIT License: http://mbed.org/license/mit
okini3939 0:ad72ec3d85e8 5 */
okini3939 0:ad72ec3d85e8 6
okini3939 0:ad72ec3d85e8 7 /** @file
okini3939 0:ad72ec3d85e8 8 * @brief mbed library to use a SENSIRION SHT1x/SHT7x sensor
okini3939 0:ad72ec3d85e8 9 * humidity/temperature sensor SHT11, SHT15, SHT71, SHT75 (SENSIRION)
okini3939 0:ad72ec3d85e8 10 * interface: I2C digital
okini3939 0:ad72ec3d85e8 11 */
okini3939 0:ad72ec3d85e8 12
okini3939 0:ad72ec3d85e8 13 #ifndef SHT1x_H
okini3939 0:ad72ec3d85e8 14 #define SHT1x_H
okini3939 0:ad72ec3d85e8 15
okini3939 0:ad72ec3d85e8 16 #include "mbed.h"
okini3939 0:ad72ec3d85e8 17
okini3939 0:ad72ec3d85e8 18 /**
okini3939 0:ad72ec3d85e8 19 * @brief resolution setting
okini3939 0:ad72ec3d85e8 20 */
okini3939 0:ad72ec3d85e8 21 enum SHT_acc {
okini3939 0:ad72ec3d85e8 22 SHT_low = 0, ///< RH 8bit, temp 12bit
okini3939 0:ad72ec3d85e8 23 SHT_high = 1, ///< RH 10bit, temp 14bit
okini3939 0:ad72ec3d85e8 24 };
okini3939 0:ad72ec3d85e8 25
okini3939 0:ad72ec3d85e8 26 enum SHT_vdd {
okini3939 0:ad72ec3d85e8 27 SHT_3V3 = 0,
okini3939 0:ad72ec3d85e8 28 SHT_5V = 1,
okini3939 0:ad72ec3d85e8 29 };
okini3939 0:ad72ec3d85e8 30
okini3939 0:ad72ec3d85e8 31 /**
okini3939 0:ad72ec3d85e8 32 * @brief SHT1x class
okini3939 0:ad72ec3d85e8 33 */
okini3939 0:ad72ec3d85e8 34 class SHT1x : public Base {
okini3939 0:ad72ec3d85e8 35 public:
okini3939 0:ad72ec3d85e8 36 /**
okini3939 0:ad72ec3d85e8 37 * @brief Initializes interface (private I2C)
okini3939 0:ad72ec3d85e8 38 * @param p_sda port of I2C SDA
okini3939 0:ad72ec3d85e8 39 * @param p_scl port of I2C SCL
okini3939 0:ad72ec3d85e8 40 * @param p_acc resolution setting
okini3939 0:ad72ec3d85e8 41 * @param p_vdd power
okini3939 0:ad72ec3d85e8 42 */
okini3939 0:ad72ec3d85e8 43 SHT1x(PinName p_sda, PinName p_scl, SHT_acc p_acc = SHT_high, SHT_vdd p_vdd = SHT_3V3);
okini3939 0:ad72ec3d85e8 44
okini3939 0:ad72ec3d85e8 45 /**
okini3939 0:ad72ec3d85e8 46 * @brief Initializes interface (public I2C)
okini3939 0:ad72ec3d85e8 47 * @param p_i2c instance of I2C class
okini3939 0:ad72ec3d85e8 48 * @param p_acc resolution setting
okini3939 0:ad72ec3d85e8 49 * @param p_vdd power
okini3939 0:ad72ec3d85e8 50 */
okini3939 0:ad72ec3d85e8 51 SHT1x(I2C& p_i2c, SHT_acc p_acc = SHT_high, SHT_vdd p_vdd = SHT_3V3);
okini3939 0:ad72ec3d85e8 52
okini3939 0:ad72ec3d85e8 53 /**
okini3939 0:ad72ec3d85e8 54 * @brief Get temperature
okini3939 0:ad72ec3d85e8 55 * @return temperature (`C)
okini3939 0:ad72ec3d85e8 56 */
okini3939 0:ad72ec3d85e8 57 float get_temperature();
okini3939 0:ad72ec3d85e8 58
okini3939 0:ad72ec3d85e8 59 /**
okini3939 0:ad72ec3d85e8 60 * @brief Get humidity
okini3939 0:ad72ec3d85e8 61 * @return humidity (%)
okini3939 0:ad72ec3d85e8 62 */
okini3939 0:ad72ec3d85e8 63 float get_humidity();
okini3939 0:ad72ec3d85e8 64
okini3939 0:ad72ec3d85e8 65 /**
okini3939 0:ad72ec3d85e8 66 * @brief Update results
okini3939 0:ad72ec3d85e8 67 */
okini3939 0:ad72ec3d85e8 68 void update();
okini3939 0:ad72ec3d85e8 69
okini3939 0:ad72ec3d85e8 70 protected:
okini3939 0:ad72ec3d85e8 71 void init(SHT_acc p_acc, SHT_vdd p_vdd);
okini3939 0:ad72ec3d85e8 72 unsigned short twi_readshort (int addr, int wait);
okini3939 0:ad72ec3d85e8 73 void twi_writechar (int, int);
okini3939 0:ad72ec3d85e8 74
okini3939 0:ad72ec3d85e8 75 I2C i2c;
okini3939 0:ad72ec3d85e8 76 float humidity, temperature;
okini3939 0:ad72ec3d85e8 77
okini3939 0:ad72ec3d85e8 78 private:
okini3939 0:ad72ec3d85e8 79 float d1, d2, c1, c2, c3, t1, t2;
okini3939 0:ad72ec3d85e8 80 enum SHT_acc accuracy;
okini3939 0:ad72ec3d85e8 81 };
okini3939 0:ad72ec3d85e8 82
okini3939 0:ad72ec3d85e8 83 #endif