Analog Devices / ADT7410 16-Bit Digital I2C Temperature Sensor
Dependents: Frequency_Counter_w_GPS_1PPS MQTToverCC3000 Frequency_Cntr_1PPS_F746ZG
ADT7410.h
- Committer:
- kenjiArai
- Date:
- 2014-11-28
- Revision:
- 0:6ec4df1fa459
- Child:
- 1:4a1eb0f32025
File content as of revision 0:6ec4df1fa459:
/* * mbed library program * Analog Devices / ADT7410 16-Bit Digital I2C Temperature Sensor * http://www.analog.com/en/mems-sensors/digital-temperature-sensors/adt7410/products/product.html * * Copyright (c) 2014 Kenji Arai / JH1PJL * http://www.page.sannet.ne.jp/kenjia/index.html * http://mbed.org/users/kenjiArai/ * Created: November 26th, 2014 * Revised: November 28th, 2014 * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef MBED_ADT7410 #define MBED_ADT7410 // ADT7410 Temperature Sensor // 7bit address = 0b01100000(0x48) -> 8bit = 0b11000000(0x90) -> 0x91(Read) or 0x90(Write) // ADDR_01 = (A1=0=J4)+(A0=1=J3), ADDR_1N = (A1=1)+(A0=No Connection =0) // -> Please make sure your H/W configuration #define ADT7410ADDR_00 0x90 #define ADT7410ADDR_NN 0x90 #define ADT7410ADDR_N1 0x92 #define ADT7410ADDR_01 0x92 #define ADT7410ADDR_1N 0x96 #define ADT7410ADDR_10 0x96 #define ADT7410ADDR_11 0x98 // ID #define I_AM_ADT7410 0x19 #define GET_ID(x) ((x >> 3) & 0x1f) #define GET_REV(x) (x & 0x7) // Configration #define OPERATION_MODE_CONT 0x00 #define OPERATION_MODE_ONESHOT 0x20 #define OPERATION_MODE_1SPS 0x40 #define OPERATION_MODE_SHTDWN 0x60 #define RESOLUTION_15BIT 0x00 #define RESOLUTION_16BIT 0x80 /** ADT7410 class * * Analog Devices / ADT7410 16-Bit Digital I2C Temperature Sensor * * @code * #include "mbed.h" * #include "ADT7410.h" * * // I2C Communication * ADT7410 t(PinName p_sda, PinName p_scl, addr); * // If you connected I2C line not only this device but also other devices, * // you need to declare following method. * I2C i2c(PinName p_sda, PinName p_scl); * ADT7410 t(I2C& p_i2c, addr); * * int main() { * while(1){ * printf("T=%5.2f degC\r\n", t.read_temp()); * wait(1.0): * } * } * @endcode */ class ADT7410 { public: /** Configure data pin * @param data SDA and SCL pins * @param ADT7410 address (H/W configuration of A1,A0) */ ADT7410(PinName p_sda, PinName p_scl, uint8_t addr); /** Configure data pin (with other devices on I2C line) * @param I2C previous definition * @param ADT7410 address (H/W configuration of A1,A0) */ ADT7410(I2C& p_i2c, uint8_t addr); /** Read temperature data * @param none * @return temperature */ float read_temp(void); /** Read status reg. * @param none * @return status register value */ uint8_t read_status(void); /** Read configration reg. * @param none * @return configrartion register value */ uint8_t read_config(void); /** Set configration reg. * @param * @return configrartion register value */ uint8_t set_config(uint8_t cfg); /** Read ADT7410 chip ID * @param none * @return ID number */ uint8_t read_id(void); /** Read ADT7410 chip revision * @param none * @return revision data */ uint8_t read_revision(void); protected: I2C _i2c; void read_all(); void init(); private: uint8_t dt[16]; char ADT7410_addr; }; #endif // MBED_ADT7410