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

Dependents:   Mbed2_ConnectTestAll Demo_ADT7410

ADT7410.hpp

Committer:
MikamiUitOpen
Date:
2017-10-28
Revision:
5:bbcd91ba7c6b
Parent:
4:3769397d3803
Child:
6:438204ab1793

File content as of revision 5:bbcd91ba7c6b:

//--------------------------------------------------------------
//  Class for ADT7410 (Header)
//      Default: 13-bit resolution
//
//  このプログラムを作った際の mbed のリビジョン:Rev.154
//  2017/10/28, Copyright (c) 2017 MIKAMI, Naoki
//--------------------------------------------------------------

#ifndef ADT7410_HPP
#define ADT7410_HPP

#include "mbed.h"

namespace Mikami
{
    class ADT7410
    {
    public:
        // Constructor
#if defined(STM32F4) || defined(STM32L0) || defined(__STM32F3xx_H)
        ADT7410(PinName sda = D14,      // SDA
                PinName scl = D15,      // SCL
                uint8_t addr = 0x90);   // I2C bus address
// Default constructor is defined for only Nucleo 
#else
        ADT7410(PinName sda,            // SDA
                PinName scl,            // SCL
                uint8_t addr = 0x90);   // I2C bus address
#endif
        // Set configuration register
        // See Figure 15 in data sheet of ADT7410
        void SetConfig(char val)
        { i2c_.write(ADDR_, (char[]){CONFIG_, val}, 2); }

        // Get value in configuration register
        uint8_t GetConfig();

        // Read temperature
        float Read();
        
        // Operator shorthand for Read()
        operator float() { return Read(); }

        // Reset
        void Reset();

    protected:
        // Register addresses
        enum Reg { TEMPER_ = 0x00,  // Temperature value MSByte
                   CONFIG_ = 0x03,  // Configuration
                   RESET_  = 0x2F}; // Software reset

        // Write single byte
        // "STOP" を送らずにふたたび "START" を送る,つまりリスタート・コンディションに
        // する場合は,"repeated" を "true" にする
        void WriteSingleByte(Reg reg, bool repeated = false)
        { i2c_.write(ADDR_, (char *)reg, 1, repeated); }

    private:
        const uint8_t ADDR_;    // left-justified 7-bit slave address of ADT7410
        I2C i2c_;               // Object of I2C
    };
}
#endif  // ADT7410_HPP