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

Dependents:   Mbed2_ConnectTestAll Demo_ADT7410

Committer:
MikamiUitOpen
Date:
Mon Jun 15 05:43:19 2015 +0000
Revision:
0:b6dc7c54b451
Child:
1:ad3046485a3e
1

Who changed what in which revision?

UserRevisionLine numberNew 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