I2C 接続の温度センサ ADT7410 用のライブラリ. Library for temperature sensor ADT7410 connected using I2C interface.
Dependents: Mbed2_ConnectTestAll Demo_ADT7410
Diff: ADT7410.cpp
- Revision:
- 0:b6dc7c54b451
- Child:
- 1:ad3046485a3e
diff -r 000000000000 -r b6dc7c54b451 ADT7410.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ADT7410.cpp Mon Jun 15 05:43:19 2015 +0000 @@ -0,0 +1,60 @@ +//-------------------------------------------------------------- +// Class for using ADT7410 +// 2015/06/10, Copyright (c) 2015 MIKAMI, Naoki +//-------------------------------------------------------------- + +#include "ADT7410.hpp" + +namespace Mikami +{ + // Constructor + ADT7410::ADT7410(PinName sda, PinName scl, uint8_t addr) + : addr_(addr), i2c_(sda, scl) + { + Reset(); + } + + // Set configuration register + // See Figure 15 in data sheet of ADT7410 + void ADT7410::SetConfig(char val) + { + char wReg[2] = { CONFIG_, val }; + i2c_.write(addr_, wReg, 2); + } + + // Get value in configuration register + // See Figure 17 in data sheet of ADT7410 + uint8_t ADT7410::GetConfig() + { + WriteSingleByte(CONFIG_, true); + + char rReg[1]; + i2c_.read(addr_, rReg, 1); + + return rReg[0]; + } + + // Get temperature + // See Figure 18 in data sheet of ADT7410 + float ADT7410::Get() + { + WriteSingleByte(TEMPER_, true); + + char rReg[2]; + i2c_.read(addr_, rReg, 2); + + int16_t value = rReg[0] << 8 | rReg[1]; + + return value/128.0f; + } + + // Reset + // See p.19 in data sheet Rev.A of ADT7410 + void ADT7410::Reset() + { + WriteSingleByte(RESET_); + wait_ms(250); + } +} + +