a library for TI's TMP102 temperature sensor.
Dependents: ou_OLED_TMP102 ou_mbed_tmp102
test_TMP102.h@1:d4774de8a3be, 2018-06-17 (annotated)
- 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?
User | Revision | Line number | New 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 | }; |