I2C 接続の温度センサ ADT7410 用のライブラリ. Library for temperature sensor ADT7410 connected using I2C interface.
Dependents: Mbed2_ConnectTestAll Demo_ADT7410
ADT7410.cpp@5:bbcd91ba7c6b, 2017-10-28 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Sat Oct 28 13:14:53 2017 +0000
- Revision:
- 5:bbcd91ba7c6b
- Parent:
- 4:3769397d3803
- Child:
- 6:438204ab1793
6
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:b6dc7c54b451 | 1 | //-------------------------------------------------------------- |
MikamiUitOpen | 5:bbcd91ba7c6b | 2 | // Class for ADT7410 |
MikamiUitOpen | 2:c134a43c7875 | 3 | // Default: 13-bit resolution |
MikamiUitOpen | 5:bbcd91ba7c6b | 4 | // |
MikamiUitOpen | 5:bbcd91ba7c6b | 5 | // このプログラムを作った際の mbed のリビジョン:Rev.154 |
MikamiUitOpen | 5:bbcd91ba7c6b | 6 | // 2017/10/28, Copyright (c) 2017 MIKAMI, Naoki |
MikamiUitOpen | 0:b6dc7c54b451 | 7 | //-------------------------------------------------------------- |
MikamiUitOpen | 0:b6dc7c54b451 | 8 | |
MikamiUitOpen | 0:b6dc7c54b451 | 9 | #include "ADT7410.hpp" |
MikamiUitOpen | 0:b6dc7c54b451 | 10 | |
MikamiUitOpen | 0:b6dc7c54b451 | 11 | namespace Mikami |
MikamiUitOpen | 0:b6dc7c54b451 | 12 | { |
MikamiUitOpen | 0:b6dc7c54b451 | 13 | // Constructor |
MikamiUitOpen | 0:b6dc7c54b451 | 14 | ADT7410::ADT7410(PinName sda, PinName scl, uint8_t addr) |
MikamiUitOpen | 4:3769397d3803 | 15 | : ADDR_(addr), i2c_(sda, scl) |
MikamiUitOpen | 5:bbcd91ba7c6b | 16 | { Reset(); } |
MikamiUitOpen | 0:b6dc7c54b451 | 17 | |
MikamiUitOpen | 0:b6dc7c54b451 | 18 | // Get value in configuration register |
MikamiUitOpen | 0:b6dc7c54b451 | 19 | // See Figure 17 in data sheet of ADT7410 |
MikamiUitOpen | 0:b6dc7c54b451 | 20 | uint8_t ADT7410::GetConfig() |
MikamiUitOpen | 0:b6dc7c54b451 | 21 | { |
MikamiUitOpen | 0:b6dc7c54b451 | 22 | WriteSingleByte(CONFIG_, true); |
MikamiUitOpen | 5:bbcd91ba7c6b | 23 | |
MikamiUitOpen | 0:b6dc7c54b451 | 24 | char rReg[1]; |
MikamiUitOpen | 4:3769397d3803 | 25 | i2c_.read(ADDR_, rReg, 1); |
MikamiUitOpen | 5:bbcd91ba7c6b | 26 | |
MikamiUitOpen | 0:b6dc7c54b451 | 27 | return rReg[0]; |
MikamiUitOpen | 0:b6dc7c54b451 | 28 | } |
MikamiUitOpen | 5:bbcd91ba7c6b | 29 | |
MikamiUitOpen | 1:ad3046485a3e | 30 | // Read temperature |
MikamiUitOpen | 0:b6dc7c54b451 | 31 | // See Figure 18 in data sheet of ADT7410 |
MikamiUitOpen | 1:ad3046485a3e | 32 | float ADT7410::Read() |
MikamiUitOpen | 0:b6dc7c54b451 | 33 | { |
MikamiUitOpen | 0:b6dc7c54b451 | 34 | WriteSingleByte(TEMPER_, true); |
MikamiUitOpen | 5:bbcd91ba7c6b | 35 | |
MikamiUitOpen | 0:b6dc7c54b451 | 36 | char rReg[2]; |
MikamiUitOpen | 4:3769397d3803 | 37 | i2c_.read(ADDR_, rReg, 2); |
MikamiUitOpen | 0:b6dc7c54b451 | 38 | |
MikamiUitOpen | 1:ad3046485a3e | 39 | int16_t value = (rReg[0] << 8) | rReg[1]; |
MikamiUitOpen | 2:c134a43c7875 | 40 | if ( (GetConfig() & 0x80) == 0x00 ) |
MikamiUitOpen | 2:c134a43c7875 | 41 | value &= 0xfff8; // For 13-bit resolution |
MikamiUitOpen | 0:b6dc7c54b451 | 42 | |
MikamiUitOpen | 0:b6dc7c54b451 | 43 | return value/128.0f; |
MikamiUitOpen | 0:b6dc7c54b451 | 44 | } |
MikamiUitOpen | 0:b6dc7c54b451 | 45 | |
MikamiUitOpen | 0:b6dc7c54b451 | 46 | // Reset |
MikamiUitOpen | 0:b6dc7c54b451 | 47 | // See p.19 in data sheet Rev.A of ADT7410 |
MikamiUitOpen | 0:b6dc7c54b451 | 48 | void ADT7410::Reset() |
MikamiUitOpen | 0:b6dc7c54b451 | 49 | { |
MikamiUitOpen | 0:b6dc7c54b451 | 50 | WriteSingleByte(RESET_); |
MikamiUitOpen | 0:b6dc7c54b451 | 51 | wait_ms(250); |
MikamiUitOpen | 2:c134a43c7875 | 52 | SetConfig(0x00); |
MikamiUitOpen | 0:b6dc7c54b451 | 53 | } |
MikamiUitOpen | 0:b6dc7c54b451 | 54 | } |
MikamiUitOpen | 5:bbcd91ba7c6b | 55 |