a library for TI's TMP102 temperature sensor.

Dependents:   ou_OLED_TMP102 ou_mbed_tmp102

Committer:
poushen
Date:
Sun Jun 17 07:09:46 2018 +0000
Revision:
1:d4774de8a3be
Parent:
0:dd209ce90298
add some description

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