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

Dependents:   Mbed2_ConnectTestAll Demo_ADT7410

Committer:
MikamiUitOpen
Date:
Thu Apr 16 04:28:59 2020 +0000
Revision:
7:990e3c54ac51
Parent:
6:438204ab1793
8

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 7:990e3c54ac51 1 //------------------------------------------------------------------
MikamiUitOpen 7:990e3c54ac51 2 // 温度センサ ADT7410 用の ADT7410 クラスのヘッダ
MikamiUitOpen 7:990e3c54ac51 3 // 温度の分解能のデフォルト値: 13 ビット
MikamiUitOpen 5:bbcd91ba7c6b 4 //
MikamiUitOpen 7:990e3c54ac51 5 // 割込みサービス・ルーチン内に記述した場合に動作しない点を修正した
MikamiUitOpen 6:438204ab1793 6 // このプログラムを作った際の mbed のリビジョン:Rev.172
MikamiUitOpen 7:990e3c54ac51 7 //
MikamiUitOpen 7:990e3c54ac51 8 // 2020/04/16, Copyright (c) 2020 MIKAMI, Naoki
MikamiUitOpen 7:990e3c54ac51 9 //------------------------------------------------------------------
MikamiUitOpen 0:b6dc7c54b451 10
MikamiUitOpen 0:b6dc7c54b451 11 #ifndef ADT7410_HPP
MikamiUitOpen 0:b6dc7c54b451 12 #define ADT7410_HPP
MikamiUitOpen 0:b6dc7c54b451 13
MikamiUitOpen 0:b6dc7c54b451 14 #include "mbed.h"
MikamiUitOpen 0:b6dc7c54b451 15
MikamiUitOpen 0:b6dc7c54b451 16 namespace Mikami
MikamiUitOpen 0:b6dc7c54b451 17 {
MikamiUitOpen 0:b6dc7c54b451 18 class ADT7410
MikamiUitOpen 0:b6dc7c54b451 19 {
MikamiUitOpen 0:b6dc7c54b451 20 public:
MikamiUitOpen 7:990e3c54ac51 21 // デフォルト・コンストラクタ
MikamiUitOpen 3:e0717c58a396 22 #if defined(STM32F4) || defined(STM32L0) || defined(__STM32F3xx_H)
MikamiUitOpen 0:b6dc7c54b451 23 ADT7410(PinName sda = D14, // SDA
MikamiUitOpen 0:b6dc7c54b451 24 PinName scl = D15, // SCL
MikamiUitOpen 0:b6dc7c54b451 25 uint8_t addr = 0x90); // I2C bus address
MikamiUitOpen 7:990e3c54ac51 26 // デフォルト・コンストラクタは Nucleo のみ
MikamiUitOpen 3:e0717c58a396 27 #else
MikamiUitOpen 3:e0717c58a396 28 ADT7410(PinName sda, // SDA
MikamiUitOpen 3:e0717c58a396 29 PinName scl, // SCL
MikamiUitOpen 3:e0717c58a396 30 uint8_t addr = 0x90); // I2C bus address
MikamiUitOpen 5:bbcd91ba7c6b 31 #endif
MikamiUitOpen 7:990e3c54ac51 32 // 外部の I2C オブジェクトを与えるコンストラクタ
MikamiUitOpen 7:990e3c54ac51 33 ADT7410(I2C &i2c, // 外部の I2C オブジェクト
MikamiUitOpen 7:990e3c54ac51 34 uint8_t addr = 0x90); // I2C bus address
MikamiUitOpen 5:bbcd91ba7c6b 35
MikamiUitOpen 7:990e3c54ac51 36 // デストラクタ
MikamiUitOpen 7:990e3c54ac51 37 virtual ~ADT7410()
MikamiUitOpen 7:990e3c54ac51 38 { if (NULL != i2cPtr_) delete i2cPtr_; }
MikamiUitOpen 7:990e3c54ac51 39
MikamiUitOpen 7:990e3c54ac51 40 // コンフィギュレーション・レジスタの設定
MikamiUitOpen 7:990e3c54ac51 41 void SetConfig(char val) const;
MikamiUitOpen 0:b6dc7c54b451 42
MikamiUitOpen 7:990e3c54ac51 43 // コンフィギュレーション・レジスタの読み込み
MikamiUitOpen 7:990e3c54ac51 44 // ADT7410 のデータシートの Figure 17 参照
MikamiUitOpen 7:990e3c54ac51 45 uint8_t GetConfig() const { return GetReg(CONFIG_); }
MikamiUitOpen 7:990e3c54ac51 46
MikamiUitOpen 7:990e3c54ac51 47 // 温度の読み込み
MikamiUitOpen 7:990e3c54ac51 48 virtual float Read() const;
MikamiUitOpen 1:ad3046485a3e 49
MikamiUitOpen 7:990e3c54ac51 50 // Read() の代わりに使える演算子
MikamiUitOpen 7:990e3c54ac51 51 virtual operator float() const { return Read(); }
MikamiUitOpen 1:ad3046485a3e 52
MikamiUitOpen 7:990e3c54ac51 53 // リセット
MikamiUitOpen 7:990e3c54ac51 54 void Reset() const;
MikamiUitOpen 0:b6dc7c54b451 55
MikamiUitOpen 0:b6dc7c54b451 56 protected:
MikamiUitOpen 7:990e3c54ac51 57 const uint8_t ADDR_; // ADT7410 の左詰めのアドレス
MikamiUitOpen 5:bbcd91ba7c6b 58
MikamiUitOpen 7:990e3c54ac51 59 // ADT7410 の内部のレジスタのアドレス
MikamiUitOpen 7:990e3c54ac51 60 enum Reg { TEMPER_ = 0x00, // 温度レジスタの上位バイト
MikamiUitOpen 7:990e3c54ac51 61 ST_ = 0x02, // ステータス・レジスタ
MikamiUitOpen 7:990e3c54ac51 62 CONFIG_ = 0x03, // コンフィギュレーション・レジスタ
MikamiUitOpen 7:990e3c54ac51 63 ID_ = 0x0B, // ID, 0xCX
MikamiUitOpen 7:990e3c54ac51 64 RESET_ = 0x2F}; // ソフトウェア・リセット
MikamiUitOpen 7:990e3c54ac51 65
MikamiUitOpen 7:990e3c54ac51 66 // ADT7410 内部レジスタのアドレスの送信
MikamiUitOpen 0:b6dc7c54b451 67 // "STOP" を送らずにふたたび "START" を送る,つまりリスタート・コンディションに
MikamiUitOpen 0:b6dc7c54b451 68 // する場合は,"repeated" を "true" にする
MikamiUitOpen 7:990e3c54ac51 69 void TxRegAddr(uint8_t reg, bool repeated = false) const;
MikamiUitOpen 7:990e3c54ac51 70
MikamiUitOpen 7:990e3c54ac51 71 // ステータス・レジスタの読み込み
MikamiUitOpen 7:990e3c54ac51 72 uint8_t GetStatus() const { return GetReg(ST_); }
MikamiUitOpen 7:990e3c54ac51 73
MikamiUitOpen 7:990e3c54ac51 74 // ADT7410 の内部レジスタの 1 バイトの読み込み
MikamiUitOpen 7:990e3c54ac51 75 uint8_t GetReg(Reg addr) const;
MikamiUitOpen 5:bbcd91ba7c6b 76
MikamiUitOpen 0:b6dc7c54b451 77 private:
MikamiUitOpen 7:990e3c54ac51 78 I2C *const i2cPtr_; // I2C オブジェクトのポインタ
MikamiUitOpen 7:990e3c54ac51 79
MikamiUitOpen 7:990e3c54ac51 80 protected:
MikamiUitOpen 7:990e3c54ac51 81 I2C &i2c_; // I2C オブジェクトの参照
MikamiUitOpen 7:990e3c54ac51 82
MikamiUitOpen 7:990e3c54ac51 83 private:
MikamiUitOpen 7:990e3c54ac51 84 // コピー・コンストラクタと代入演算子関数の禁止
MikamiUitOpen 7:990e3c54ac51 85 ADT7410(const ADT7410&);
MikamiUitOpen 7:990e3c54ac51 86 ADT7410& operator=(const ADT7410&);
MikamiUitOpen 0:b6dc7c54b451 87 };
MikamiUitOpen 0:b6dc7c54b451 88 }
MikamiUitOpen 6:438204ab1793 89 #endif // ADT7410_HPP