I2C 接続の温度センサ ADT7410 用のライブラリ. Library for temperature sensor ADT7410 connected using I2C interface.
Dependents: Mbed2_ConnectTestAll Demo_ADT7410
ADT7410.cpp@0:b6dc7c54b451, 2015-06-15 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Mon Jun 15 05:43:19 2015 +0000
- Revision:
- 0:b6dc7c54b451
- Child:
- 1:ad3046485a3e
1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:b6dc7c54b451 | 1 | //-------------------------------------------------------------- |
MikamiUitOpen | 0:b6dc7c54b451 | 2 | // Class for using ADT7410 |
MikamiUitOpen | 0:b6dc7c54b451 | 3 | // 2015/06/10, Copyright (c) 2015 MIKAMI, Naoki |
MikamiUitOpen | 0:b6dc7c54b451 | 4 | //-------------------------------------------------------------- |
MikamiUitOpen | 0:b6dc7c54b451 | 5 | |
MikamiUitOpen | 0:b6dc7c54b451 | 6 | #include "ADT7410.hpp" |
MikamiUitOpen | 0:b6dc7c54b451 | 7 | |
MikamiUitOpen | 0:b6dc7c54b451 | 8 | namespace Mikami |
MikamiUitOpen | 0:b6dc7c54b451 | 9 | { |
MikamiUitOpen | 0:b6dc7c54b451 | 10 | // Constructor |
MikamiUitOpen | 0:b6dc7c54b451 | 11 | ADT7410::ADT7410(PinName sda, PinName scl, uint8_t addr) |
MikamiUitOpen | 0:b6dc7c54b451 | 12 | : addr_(addr), i2c_(sda, scl) |
MikamiUitOpen | 0:b6dc7c54b451 | 13 | { |
MikamiUitOpen | 0:b6dc7c54b451 | 14 | Reset(); |
MikamiUitOpen | 0:b6dc7c54b451 | 15 | } |
MikamiUitOpen | 0:b6dc7c54b451 | 16 | |
MikamiUitOpen | 0:b6dc7c54b451 | 17 | // Set configuration register |
MikamiUitOpen | 0:b6dc7c54b451 | 18 | // See Figure 15 in data sheet of ADT7410 |
MikamiUitOpen | 0:b6dc7c54b451 | 19 | void ADT7410::SetConfig(char val) |
MikamiUitOpen | 0:b6dc7c54b451 | 20 | { |
MikamiUitOpen | 0:b6dc7c54b451 | 21 | char wReg[2] = { CONFIG_, val }; |
MikamiUitOpen | 0:b6dc7c54b451 | 22 | i2c_.write(addr_, wReg, 2); |
MikamiUitOpen | 0:b6dc7c54b451 | 23 | } |
MikamiUitOpen | 0:b6dc7c54b451 | 24 | |
MikamiUitOpen | 0:b6dc7c54b451 | 25 | // Get value in configuration register |
MikamiUitOpen | 0:b6dc7c54b451 | 26 | // See Figure 17 in data sheet of ADT7410 |
MikamiUitOpen | 0:b6dc7c54b451 | 27 | uint8_t ADT7410::GetConfig() |
MikamiUitOpen | 0:b6dc7c54b451 | 28 | { |
MikamiUitOpen | 0:b6dc7c54b451 | 29 | WriteSingleByte(CONFIG_, true); |
MikamiUitOpen | 0:b6dc7c54b451 | 30 | |
MikamiUitOpen | 0:b6dc7c54b451 | 31 | char rReg[1]; |
MikamiUitOpen | 0:b6dc7c54b451 | 32 | i2c_.read(addr_, rReg, 1); |
MikamiUitOpen | 0:b6dc7c54b451 | 33 | |
MikamiUitOpen | 0:b6dc7c54b451 | 34 | return rReg[0]; |
MikamiUitOpen | 0:b6dc7c54b451 | 35 | } |
MikamiUitOpen | 0:b6dc7c54b451 | 36 | |
MikamiUitOpen | 0:b6dc7c54b451 | 37 | // Get temperature |
MikamiUitOpen | 0:b6dc7c54b451 | 38 | // See Figure 18 in data sheet of ADT7410 |
MikamiUitOpen | 0:b6dc7c54b451 | 39 | float ADT7410::Get() |
MikamiUitOpen | 0:b6dc7c54b451 | 40 | { |
MikamiUitOpen | 0:b6dc7c54b451 | 41 | WriteSingleByte(TEMPER_, true); |
MikamiUitOpen | 0:b6dc7c54b451 | 42 | |
MikamiUitOpen | 0:b6dc7c54b451 | 43 | char rReg[2]; |
MikamiUitOpen | 0:b6dc7c54b451 | 44 | i2c_.read(addr_, rReg, 2); |
MikamiUitOpen | 0:b6dc7c54b451 | 45 | |
MikamiUitOpen | 0:b6dc7c54b451 | 46 | int16_t value = rReg[0] << 8 | rReg[1]; |
MikamiUitOpen | 0:b6dc7c54b451 | 47 | |
MikamiUitOpen | 0:b6dc7c54b451 | 48 | return value/128.0f; |
MikamiUitOpen | 0:b6dc7c54b451 | 49 | } |
MikamiUitOpen | 0:b6dc7c54b451 | 50 | |
MikamiUitOpen | 0:b6dc7c54b451 | 51 | // Reset |
MikamiUitOpen | 0:b6dc7c54b451 | 52 | // See p.19 in data sheet Rev.A of ADT7410 |
MikamiUitOpen | 0:b6dc7c54b451 | 53 | void ADT7410::Reset() |
MikamiUitOpen | 0:b6dc7c54b451 | 54 | { |
MikamiUitOpen | 0:b6dc7c54b451 | 55 | WriteSingleByte(RESET_); |
MikamiUitOpen | 0:b6dc7c54b451 | 56 | wait_ms(250); |
MikamiUitOpen | 0:b6dc7c54b451 | 57 | } |
MikamiUitOpen | 0:b6dc7c54b451 | 58 | } |
MikamiUitOpen | 0:b6dc7c54b451 | 59 | |
MikamiUitOpen | 0:b6dc7c54b451 | 60 |