library for ADT7410 temperature sensor first version
adt7410.h@5:d003a86ca20e, 2014-12-21 (annotated)
- Committer:
- igbt6
- Date:
- Sun Dec 21 11:42:40 2014 +0000
- Revision:
- 5:d003a86ca20e
- Parent:
- 4:89644cedc8c8
library for ADT7410 temperature sensor first version done
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
igbt6 | 1:131a836c6b79 | 1 | /* |
igbt6 | 1:131a836c6b79 | 2 | @file adt7410.h |
igbt6 | 5:d003a86ca20e | 3 | |
igbt6 | 5:d003a86ca20e | 4 | @brief Temperature Sensor ADT7410 Breakout I2C Library |
igbt6 | 1:131a836c6b79 | 5 | |
igbt6 | 1:131a836c6b79 | 6 | @Author lukasz uszko(luszko@op.pl) |
igbt6 | 1:131a836c6b79 | 7 | |
igbt6 | 1:131a836c6b79 | 8 | Tested on FRDM-KL46Z |
igbt6 | 5:d003a86ca20e | 9 | |
igbt6 | 1:131a836c6b79 | 10 | Copyright (c) 2014 luszko |
igbt6 | 1:131a836c6b79 | 11 | Released under the MIT License (see http://mbed.org/license/mit) |
igbt6 | 1:131a836c6b79 | 12 | |
igbt6 | 5:d003a86ca20e | 13 | Documentation regarding the ADT7410 can be found here: |
igbt6 | 1:131a836c6b79 | 14 | http://www.analog.com/static/imported-files/data_sheets/ADT7410.pdf |
igbt6 | 1:131a836c6b79 | 15 | */ |
igbt6 | 1:131a836c6b79 | 16 | |
igbt6 | 1:131a836c6b79 | 17 | |
igbt6 | 1:131a836c6b79 | 18 | |
igbt6 | 1:131a836c6b79 | 19 | #ifndef ADT7410_H |
igbt6 | 1:131a836c6b79 | 20 | #define ADT7410_H |
igbt6 | 1:131a836c6b79 | 21 | |
igbt6 | 1:131a836c6b79 | 22 | #include "mbed.h" |
igbt6 | 1:131a836c6b79 | 23 | |
igbt6 | 1:131a836c6b79 | 24 | |
igbt6 | 3:41839eb9229f | 25 | #define ADT7410_I2C_ADDRESS 0x97 //A0 and A1 PIN are conected to VDD |
igbt6 | 4:89644cedc8c8 | 26 | #define ADT7410_2_I2C_ADDRESS 0x90 //A0 and A1 PIN are conected to GND |
igbt6 | 1:131a836c6b79 | 27 | |
igbt6 | 5:d003a86ca20e | 28 | |
igbt6 | 5:d003a86ca20e | 29 | #define UNSET_ADT7410_TEMPERATURE -999 |
igbt6 | 5:d003a86ca20e | 30 | |
igbt6 | 5:d003a86ca20e | 31 | |
igbt6 | 1:131a836c6b79 | 32 | |
igbt6 | 1:131a836c6b79 | 33 | |
igbt6 | 5:d003a86ca20e | 34 | class ADT7410 |
igbt6 | 5:d003a86ca20e | 35 | { |
igbt6 | 5:d003a86ca20e | 36 | |
igbt6 | 5:d003a86ca20e | 37 | public: |
igbt6 | 5:d003a86ca20e | 38 | //typedefs: |
igbt6 | 5:d003a86ca20e | 39 | |
igbt6 | 5:d003a86ca20e | 40 | typedef enum { |
igbt6 | 5:d003a86ca20e | 41 | _13_BIT=0, |
igbt6 | 5:d003a86ca20e | 42 | _16_BIT=1 |
igbt6 | 5:d003a86ca20e | 43 | } CONF_RESOLUTION; |
igbt6 | 5:d003a86ca20e | 44 | |
igbt6 | 5:d003a86ca20e | 45 | typedef enum { |
igbt6 | 5:d003a86ca20e | 46 | CONT_CONV=0, |
igbt6 | 5:d003a86ca20e | 47 | ONE_SHOT, |
igbt6 | 5:d003a86ca20e | 48 | SPS_MODE, |
igbt6 | 5:d003a86ca20e | 49 | SHUTDOWN |
igbt6 | 5:d003a86ca20e | 50 | } CONF_OPERATION_MODE; |
igbt6 | 5:d003a86ca20e | 51 | |
igbt6 | 5:d003a86ca20e | 52 | typedef enum { |
igbt6 | 5:d003a86ca20e | 53 | INTERRUPT_MODE=0, |
igbt6 | 5:d003a86ca20e | 54 | COMPARATOR_MODE=1 |
igbt6 | 5:d003a86ca20e | 55 | } CONF_INT_CT_MODE; |
igbt6 | 5:d003a86ca20e | 56 | |
igbt6 | 5:d003a86ca20e | 57 | typedef enum { |
igbt6 | 5:d003a86ca20e | 58 | INT_ACTIVE_LOW=0, |
igbt6 | 5:d003a86ca20e | 59 | INT_ACTIVE_HIGH=1 |
igbt6 | 5:d003a86ca20e | 60 | } CONF_INT_PIN_POLARITY; |
igbt6 | 5:d003a86ca20e | 61 | |
igbt6 | 5:d003a86ca20e | 62 | typedef enum { |
igbt6 | 5:d003a86ca20e | 63 | CT_ACTIVE_LOW=0, |
igbt6 | 5:d003a86ca20e | 64 | CT_ACTIVE_HIGH=1 |
igbt6 | 5:d003a86ca20e | 65 | } CONF_CT_PIN_POLARITY; |
igbt6 | 5:d003a86ca20e | 66 | |
igbt6 | 5:d003a86ca20e | 67 | typedef enum { |
igbt6 | 5:d003a86ca20e | 68 | _1_FAULT=0, |
igbt6 | 5:d003a86ca20e | 69 | _2_FAULTS, |
igbt6 | 5:d003a86ca20e | 70 | _3_FAULTS, |
igbt6 | 5:d003a86ca20e | 71 | _4_FAULTS |
igbt6 | 5:d003a86ca20e | 72 | } CONF_FAULT_QUEUE; |
igbt6 | 1:131a836c6b79 | 73 | |
igbt6 | 1:131a836c6b79 | 74 | /** Create an ADT7410 instance |
igbt6 | 5:d003a86ca20e | 75 | * @param sda pin |
igbt6 | 5:d003a86ca20e | 76 | * @param scl pin |
igbt6 | 5:d003a86ca20e | 77 | * @param address: I2C slave address |
igbt6 | 1:131a836c6b79 | 78 | */ |
igbt6 | 5:d003a86ca20e | 79 | ADT7410(PinName sda, PinName scl,int i2cFrequency=100000,int address = ADT7410_I2C_ADDRESS); |
igbt6 | 1:131a836c6b79 | 80 | |
igbt6 | 1:131a836c6b79 | 81 | /** Create a ADT7410 instance |
igbt6 | 1:131a836c6b79 | 82 | * @param i2c object |
igbt6 | 5:d003a86ca20e | 83 | * @param address: I2C slave address |
igbt6 | 1:131a836c6b79 | 84 | */ |
igbt6 | 5:d003a86ca20e | 85 | ADT7410(I2C& i2c, int address = ADT7410_I2C_ADDRESS); |
igbt6 | 1:131a836c6b79 | 86 | |
igbt6 | 5:d003a86ca20e | 87 | /** Initialization: set member values and |
igbt6 | 1:131a836c6b79 | 88 | * @returns |
igbt6 | 1:131a836c6b79 | 89 | * 1 on success, |
igbt6 | 1:131a836c6b79 | 90 | * 0 on error |
igbt6 | 1:131a836c6b79 | 91 | */ |
igbt6 | 5:d003a86ca20e | 92 | bool setConfiguration(CONF_FAULT_QUEUE faultQueue=_1_FAULT, |
igbt6 | 5:d003a86ca20e | 93 | CONF_CT_PIN_POLARITY ctPinPolarity=CT_ACTIVE_LOW, |
igbt6 | 5:d003a86ca20e | 94 | CONF_INT_PIN_POLARITY intPinPolarity=INT_ACTIVE_LOW, |
igbt6 | 5:d003a86ca20e | 95 | CONF_INT_CT_MODE intCtMode=INTERRUPT_MODE, |
igbt6 | 5:d003a86ca20e | 96 | CONF_OPERATION_MODE operMode=CONT_CONV, |
igbt6 | 5:d003a86ca20e | 97 | CONF_RESOLUTION res=_16_BIT); |
igbt6 | 1:131a836c6b79 | 98 | |
igbt6 | 1:131a836c6b79 | 99 | /** Read temperature from the ADT7410. |
igbt6 | 5:d003a86ca20e | 100 | * @param temperature (C) |
igbt6 | 5:d003a86ca20e | 101 | * @returns |
igbt6 | 5:d003a86ca20e | 102 | * 1 on success, |
igbt6 | 5:d003a86ca20e | 103 | * 0 on error |
igbt6 | 5:d003a86ca20e | 104 | */ |
igbt6 | 5:d003a86ca20e | 105 | bool readTemp(); |
igbt6 | 5:d003a86ca20e | 106 | |
igbt6 | 5:d003a86ca20e | 107 | |
igbt6 | 5:d003a86ca20e | 108 | /** Read ID number of the chip. |
igbt6 | 5:d003a86ca20e | 109 | * @param temperature (C) |
igbt6 | 5:d003a86ca20e | 110 | * @returns ID number (8 bit Value) |
igbt6 | 5:d003a86ca20e | 111 | */ |
igbt6 | 5:d003a86ca20e | 112 | int readIdNumber(void); |
igbt6 | 5:d003a86ca20e | 113 | |
igbt6 | 5:d003a86ca20e | 114 | |
igbt6 | 5:d003a86ca20e | 115 | /** Set resolution of read data |
igbt6 | 1:131a836c6b79 | 116 | * @returns |
igbt6 | 1:131a836c6b79 | 117 | * 1 on success, |
igbt6 | 1:131a836c6b79 | 118 | * 0 on error |
igbt6 | 5:d003a86ca20e | 119 | */ |
igbt6 | 5:d003a86ca20e | 120 | bool setResolution(CONF_RESOLUTION res); |
igbt6 | 1:131a836c6b79 | 121 | |
igbt6 | 5:d003a86ca20e | 122 | /** Get temperature from a previous measurement |
igbt6 | 3:41839eb9229f | 123 | * |
igbt6 | 1:131a836c6b79 | 124 | * @returns |
igbt6 | 1:131a836c6b79 | 125 | * temperature (C) |
igbt6 | 5:d003a86ca20e | 126 | */ |
igbt6 | 5:d003a86ca20e | 127 | inline float getTemperature(void) { |
igbt6 | 5:d003a86ca20e | 128 | return mTemperature; |
igbt6 | 5:d003a86ca20e | 129 | } |
igbt6 | 1:131a836c6b79 | 130 | |
igbt6 | 1:131a836c6b79 | 131 | protected: |
igbt6 | 5:d003a86ca20e | 132 | |
igbt6 | 5:d003a86ca20e | 133 | float mTemperature; |
igbt6 | 5:d003a86ca20e | 134 | I2C mI2c; |
igbt6 | 5:d003a86ca20e | 135 | int mI2cAddr; |
igbt6 | 5:d003a86ca20e | 136 | uint8_t mResolution; |
igbt6 | 5:d003a86ca20e | 137 | |
igbt6 | 5:d003a86ca20e | 138 | private: |
igbt6 | 5:d003a86ca20e | 139 | |
igbt6 | 5:d003a86ca20e | 140 | /** Write data to the given register (using I2C bus) |
igbt6 | 5:d003a86ca20e | 141 | * |
igbt6 | 5:d003a86ca20e | 142 | * @returns |
igbt6 | 5:d003a86ca20e | 143 | * 1 on success, |
igbt6 | 5:d003a86ca20e | 144 | * 0 on error |
igbt6 | 5:d003a86ca20e | 145 | */ |
igbt6 | 5:d003a86ca20e | 146 | bool write(uint8_t regAddress, uint8_t* data,int dataLength); |
igbt6 | 5:d003a86ca20e | 147 | |
igbt6 | 1:131a836c6b79 | 148 | /** Write data to the given register |
igbt6 | 5:d003a86ca20e | 149 | * @param register Address |
igbt6 | 5:d003a86ca20e | 150 | * @param data to read |
igbt6 | 5:d003a86ca20e | 151 | * @param length of data to read |
igbt6 | 1:131a836c6b79 | 152 | * @returns |
igbt6 | 1:131a836c6b79 | 153 | * 1 on success, |
igbt6 | 1:131a836c6b79 | 154 | * 0 on error |
igbt6 | 5:d003a86ca20e | 155 | */ |
igbt6 | 5:d003a86ca20e | 156 | bool read(uint8_t regAddress, uint8_t* data,int length); |
igbt6 | 2:d12dffd027a8 | 157 | |
igbt6 | 5:d003a86ca20e | 158 | |
igbt6 | 1:131a836c6b79 | 159 | |
igbt6 | 1:131a836c6b79 | 160 | }; |
igbt6 | 1:131a836c6b79 | 161 | |
igbt6 | 1:131a836c6b79 | 162 | #endif |