I2C 接続の温度センサ ADT7410 用のライブラリ. Library for temperature sensor ADT7410 connected using I2C interface.
Dependents: Mbed2_ConnectTestAll Demo_ADT7410
ADT7410.hpp@7:990e3c54ac51, 2020-04-16 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Thu Apr 16 04:28:59 2020 +0000
- Revision:
- 7:990e3c54ac51
- Parent:
- 6:438204ab1793
8
Who changed what in which revision?
User | Revision | Line number | New 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 |