I2C 接続の温度センサ ADT7410 用のライブラリ. Library for temperature sensor ADT7410 connected using I2C interface.
Dependents: Mbed2_ConnectTestAll Demo_ADT7410
ADT7410.cpp@4:3769397d3803, 2017-09-01 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Fri Sep 01 11:14:31 2017 +0000
- Revision:
- 4:3769397d3803
- Parent:
- 2:c134a43c7875
- Child:
- 5:bbcd91ba7c6b
5
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 | 2:c134a43c7875 | 3 | // Default: 13-bit resolution |
MikamiUitOpen | 4:3769397d3803 | 4 | // 2017/09/01, Copyright (c) 2017 MIKAMI, Naoki |
MikamiUitOpen | 0:b6dc7c54b451 | 5 | //-------------------------------------------------------------- |
MikamiUitOpen | 0:b6dc7c54b451 | 6 | |
MikamiUitOpen | 0:b6dc7c54b451 | 7 | #include "ADT7410.hpp" |
MikamiUitOpen | 0:b6dc7c54b451 | 8 | |
MikamiUitOpen | 0:b6dc7c54b451 | 9 | namespace Mikami |
MikamiUitOpen | 0:b6dc7c54b451 | 10 | { |
MikamiUitOpen | 0:b6dc7c54b451 | 11 | // Constructor |
MikamiUitOpen | 0:b6dc7c54b451 | 12 | ADT7410::ADT7410(PinName sda, PinName scl, uint8_t addr) |
MikamiUitOpen | 4:3769397d3803 | 13 | : ADDR_(addr), i2c_(sda, scl) |
MikamiUitOpen | 0:b6dc7c54b451 | 14 | { |
MikamiUitOpen | 0:b6dc7c54b451 | 15 | Reset(); |
MikamiUitOpen | 0:b6dc7c54b451 | 16 | } |
MikamiUitOpen | 0:b6dc7c54b451 | 17 | |
MikamiUitOpen | 0:b6dc7c54b451 | 18 | // Set configuration register |
MikamiUitOpen | 0:b6dc7c54b451 | 19 | // See Figure 15 in data sheet of ADT7410 |
MikamiUitOpen | 0:b6dc7c54b451 | 20 | void ADT7410::SetConfig(char val) |
MikamiUitOpen | 0:b6dc7c54b451 | 21 | { |
MikamiUitOpen | 0:b6dc7c54b451 | 22 | char wReg[2] = { CONFIG_, val }; |
MikamiUitOpen | 4:3769397d3803 | 23 | i2c_.write(ADDR_, wReg, 2); |
MikamiUitOpen | 0:b6dc7c54b451 | 24 | } |
MikamiUitOpen | 0:b6dc7c54b451 | 25 | |
MikamiUitOpen | 0:b6dc7c54b451 | 26 | // Get value in configuration register |
MikamiUitOpen | 0:b6dc7c54b451 | 27 | // See Figure 17 in data sheet of ADT7410 |
MikamiUitOpen | 0:b6dc7c54b451 | 28 | uint8_t ADT7410::GetConfig() |
MikamiUitOpen | 0:b6dc7c54b451 | 29 | { |
MikamiUitOpen | 0:b6dc7c54b451 | 30 | WriteSingleByte(CONFIG_, true); |
MikamiUitOpen | 0:b6dc7c54b451 | 31 | |
MikamiUitOpen | 0:b6dc7c54b451 | 32 | char rReg[1]; |
MikamiUitOpen | 4:3769397d3803 | 33 | i2c_.read(ADDR_, rReg, 1); |
MikamiUitOpen | 0:b6dc7c54b451 | 34 | |
MikamiUitOpen | 0:b6dc7c54b451 | 35 | return rReg[0]; |
MikamiUitOpen | 0:b6dc7c54b451 | 36 | } |
MikamiUitOpen | 0:b6dc7c54b451 | 37 | |
MikamiUitOpen | 1:ad3046485a3e | 38 | // Read temperature |
MikamiUitOpen | 0:b6dc7c54b451 | 39 | // See Figure 18 in data sheet of ADT7410 |
MikamiUitOpen | 1:ad3046485a3e | 40 | float ADT7410::Read() |
MikamiUitOpen | 0:b6dc7c54b451 | 41 | { |
MikamiUitOpen | 0:b6dc7c54b451 | 42 | WriteSingleByte(TEMPER_, true); |
MikamiUitOpen | 0:b6dc7c54b451 | 43 | |
MikamiUitOpen | 0:b6dc7c54b451 | 44 | char rReg[2]; |
MikamiUitOpen | 4:3769397d3803 | 45 | i2c_.read(ADDR_, rReg, 2); |
MikamiUitOpen | 0:b6dc7c54b451 | 46 | |
MikamiUitOpen | 1:ad3046485a3e | 47 | int16_t value = (rReg[0] << 8) | rReg[1]; |
MikamiUitOpen | 2:c134a43c7875 | 48 | if ( (GetConfig() & 0x80) == 0x00 ) |
MikamiUitOpen | 2:c134a43c7875 | 49 | value &= 0xfff8; // For 13-bit resolution |
MikamiUitOpen | 0:b6dc7c54b451 | 50 | |
MikamiUitOpen | 0:b6dc7c54b451 | 51 | return value/128.0f; |
MikamiUitOpen | 0:b6dc7c54b451 | 52 | } |
MikamiUitOpen | 0:b6dc7c54b451 | 53 | |
MikamiUitOpen | 0:b6dc7c54b451 | 54 | // Reset |
MikamiUitOpen | 0:b6dc7c54b451 | 55 | // See p.19 in data sheet Rev.A of ADT7410 |
MikamiUitOpen | 0:b6dc7c54b451 | 56 | void ADT7410::Reset() |
MikamiUitOpen | 0:b6dc7c54b451 | 57 | { |
MikamiUitOpen | 0:b6dc7c54b451 | 58 | WriteSingleByte(RESET_); |
MikamiUitOpen | 0:b6dc7c54b451 | 59 | wait_ms(250); |
MikamiUitOpen | 2:c134a43c7875 | 60 | SetConfig(0x00); |
MikamiUitOpen | 0:b6dc7c54b451 | 61 | } |
MikamiUitOpen | 0:b6dc7c54b451 | 62 | } |