a library for TI's TMP102 temperature sensor.

Dependents:   ou_OLED_TMP102 ou_mbed_tmp102

Committer:
poushen
Date:
Tue Jun 12 03:37:27 2018 +0000
Revision:
0:dd209ce90298
Child:
1:d4774de8a3be
move tmp102 class to TMP102 library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
poushen 0:dd209ce90298 1 /** A practice code for class library development
poushen 0:dd209ce90298 2 *
poushen 0:dd209ce90298 3 * @author Yasubumi KANAZAWA
poushen 0:dd209ce90298 4 * @version 1.0
poushen 0:dd209ce90298 5 * @date 26-Nov-2017
poushen 0:dd209ce90298 6 *
poushen 0:dd209ce90298 7 * This code is plactice of the class code development.
poushen 0:dd209ce90298 8 * The sample is a I2C temperature sensor TMP102.
poushen 0:dd209ce90298 9 *
poushen 0:dd209ce90298 10 * Reference page
poushen 0:dd209ce90298 11 * https://os.mbed.com/users/okano/notebook/mbed-library-study-meeting-2014-nov-07/"
poushen 0:dd209ce90298 12 *
poushen 0:dd209ce90298 13 * About TMP102:
poushen 0:dd209ce90298 14 * http://www.sparkfun.com/datasheets/Sensors/Temperature/tmp102.pdf
poushen 0:dd209ce90298 15 */
poushen 0:dd209ce90298 16
poushen 0:dd209ce90298 17 #include "mbed.h"
poushen 0:dd209ce90298 18
poushen 0:dd209ce90298 19 /** Default slave address(ADD0 connected to GND) */
poushen 0:dd209ce90298 20 #define ADDR_TMP102 0x90
poushen 0:dd209ce90298 21
poushen 0:dd209ce90298 22 /** TMP102 register names and addresses */
poushen 0:dd209ce90298 23 #define TMP102_Temp 0x00
poushen 0:dd209ce90298 24 #define TMP102_Conf 0x01
poushen 0:dd209ce90298 25 #define TMP102_Tlow 0x02
poushen 0:dd209ce90298 26 #define TMP102_Thigh 0x03
poushen 0:dd209ce90298 27
poushen 0:dd209ce90298 28 /** test_TMP102 Class Library
poushen 0:dd209ce90298 29 * to provide very simple interface for mbed
poushen 0:dd209ce90298 30 *
poushen 0:dd209ce90298 31 * Example:
poushen 0:dd209ce90298 32 * @code
poushen 0:dd209ce90298 33 * #include "mbed.h"
poushen 0:dd209ce90298 34 * #include "test_TMP102.h"
poushen 0:dd209ce90298 35 *
poushen 0:dd209ce90298 36 * // make test_TMP102 instance using GPIO pin name.
poushen 0:dd209ce90298 37 * test_TMP102 temp0(dp4,dp5);
poushen 0:dd209ce90298 38 *
poushen 0:dd209ce90298 39 * // make test_TMP102 instance using I2C object.
poushen 0:dd209ce90298 40 * I2C i2c(dp4,dp5);
poushen 0:dd209ce90298 41 * test_TMP102 temp1(i2c);
poushen 0:dd209ce90298 42 *
poushen 0:dd209ce90298 43 * int main()
poushen 0:dd209ce90298 44 * {
poushen 0:dd209ce90298 45 * float t0,t1;
poushen 0:dd209ce90298 46 *
poushen 0:dd209ce90298 47 * i2c.frequency(400*1000);
poushen 0:dd209ce90298 48 *
poushen 0:dd209ce90298 49 * while(1) {
poushen 0:dd209ce90298 50 * t0=temp0;
poushen 0:dd209ce90298 51 * t1=temp1;
poushen 0:dd209ce90298 52 * printf("Temp: %7.3f, %7.3f\r\n", t0, t1);
poushen 0:dd209ce90298 53 * wait(1.0);
poushen 0:dd209ce90298 54 * }
poushen 0:dd209ce90298 55 * }
poushen 0:dd209ce90298 56 * @endcode
poushen 0:dd209ce90298 57 */
poushen 0:dd209ce90298 58 class test_TMP102
poushen 0:dd209ce90298 59 {
poushen 0:dd209ce90298 60 public:
poushen 0:dd209ce90298 61 /** Create a test_TMP102 instance connected to specified I2C pins with specified address
poushen 0:dd209ce90298 62 *
poushen 0:dd209ce90298 63 * @param sda I2C-bus SDA pin
poushen 0:dd209ce90298 64 * @param scl I2C-bus SCL pin
poushen 0:dd209ce90298 65 * @param address (option) I2C-bus slave address (default: 0x90)
poushen 0:dd209ce90298 66 */
poushen 0:dd209ce90298 67 test_TMP102(PinName sda, PinName scl, char address = ADDR_TMP102);
poushen 0:dd209ce90298 68
poushen 0:dd209ce90298 69 /** Create a test_TMP102 instance connected to specified I2C pins with specified address
poushen 0:dd209ce90298 70 *
poushen 0:dd209ce90298 71 * @param i2c_obj I2C object (instance)
poushen 0:dd209ce90298 72 * @param address (option) I2C-bus slave address (default: 0x90)
poushen 0:dd209ce90298 73 */
poushen 0:dd209ce90298 74 test_TMP102(I2C &i2c_obj, char address = ADDR_TMP102);
poushen 0:dd209ce90298 75
poushen 0:dd209ce90298 76 /** Destractor */
poushen 0:dd209ce90298 77 ~test_TMP102();
poushen 0:dd209ce90298 78
poushen 0:dd209ce90298 79 /** Initialization */
poushen 0:dd209ce90298 80 void init(void);
poushen 0:dd209ce90298 81
poushen 0:dd209ce90298 82 /** Read temperature
poushen 0:dd209ce90298 83 *
poushen 0:dd209ce90298 84 * @return value of degree Celsius (in float)
poushen 0:dd209ce90298 85 */
poushen 0:dd209ce90298 86 float read(void);
poushen 0:dd209ce90298 87
poushen 0:dd209ce90298 88 /** Read temperature
poushen 0:dd209ce90298 89 *
poushen 0:dd209ce90298 90 * @return value of degree C (in float)
poushen 0:dd209ce90298 91 */
poushen 0:dd209ce90298 92 float readTempC(void);
poushen 0:dd209ce90298 93
poushen 0:dd209ce90298 94 /** Read temperature
poushen 0:dd209ce90298 95 *
poushen 0:dd209ce90298 96 * @return value of degree F (in float)
poushen 0:dd209ce90298 97 */
poushen 0:dd209ce90298 98 float readTempF(void);
poushen 0:dd209ce90298 99
poushen 0:dd209ce90298 100 /** Read temperature
poushen 0:dd209ce90298 101 *
poushen 0:dd209ce90298 102 * @return the object returns the read value
poushen 0:dd209ce90298 103 */
poushen 0:dd209ce90298 104 operator float(void);
poushen 0:dd209ce90298 105
poushen 0:dd209ce90298 106 /** Set the conversion rate (0-3)
poushen 0:dd209ce90298 107 *
poushen 0:dd209ce90298 108 * @param rate Conversion Rate
poushen 0:dd209ce90298 109 * 0 - 0.25Hz
poushen 0:dd209ce90298 110 * 1 - 1 Hz
poushen 0:dd209ce90298 111 * 2 - 4 Hz (default)
poushen 0:dd209ce90298 112 * 3 - 8 Hz
poushen 0:dd209ce90298 113 */
poushen 0:dd209ce90298 114 void setConversionRate(char rate);
poushen 0:dd209ce90298 115
poushen 0:dd209ce90298 116 /** Enable or disable extened mode
poushen 0:dd209ce90298 117 *
poushen 0:dd209ce90298 118 * @param mode Extend Mode (0 disable, 1 enabled)
poushen 0:dd209ce90298 119 *
poushen 0:dd209ce90298 120 */
poushen 0:dd209ce90298 121 void setExtendedMode(bool mode);
poushen 0:dd209ce90298 122
poushen 0:dd209ce90298 123 /** Switch sensor to low power mode */
poushen 0:dd209ce90298 124 void sleep(void);
poushen 0:dd209ce90298 125
poushen 0:dd209ce90298 126 /** Wakeup and start running in normal power mode */
poushen 0:dd209ce90298 127 void wakeup(void);
poushen 0:dd209ce90298 128
poushen 0:dd209ce90298 129 /** enter One-Shot mode, and wait for temperature sample complete (about 26ms) */
poushen 0:dd209ce90298 130 void oneShot(void);
poushen 0:dd209ce90298 131
poushen 0:dd209ce90298 132 private:
poushen 0:dd209ce90298 133 I2C *i2c_p;
poushen 0:dd209ce90298 134 I2C &i2c;
poushen 0:dd209ce90298 135 char adr;
poushen 0:dd209ce90298 136 };