I2C 接続の温度センサ ADT7410 用のライブラリ. Library for temperature sensor ADT7410 connected using I2C interface.

Dependents:   Mbed2_ConnectTestAll Demo_ADT7410

Committer:
MikamiUitOpen
Date:
Thu Apr 02 02:38:16 2020 +0000
Revision:
6:438204ab1793
Parent:
5:bbcd91ba7c6b
Child:
7:990e3c54ac51
7

Who changed what in which revision?

UserRevisionLine numberNew 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 6:438204ab1793 5 // このプログラムを作った際の mbed のリビジョン:Rev.172
MikamiUitOpen 6:438204ab1793 6 // 2020/04/02, Copyright (c) 2020 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 6:438204ab1793 54 }