/* * Anatole SCHRAMM-HENRY * Tim THUREL * Température groupe 3 * Date 14/02/2020 00:05 * * Classe permettant de piloter le STS21 * Capteur de température de la marque SENSIRION * Précision : 0.2°C * * Tout droit réservé */ #ifndef STS21_H #define STS21_H #include "I2CDevice.h" //Définition des commandes #define HOLD_MASTER 0xE3 #define NO_HOLD_MASTER 0xF3 #define WRITE_USER_REG 0xE6 #define READ_USER_REG 0xE7 #define SOFT_RST 0xFE //User register bits #define END_OF_BAT 0x40 #define CHIP_HEATER 0x04 /*! @brief La classe STS21 permetant de dialoguer avec le STS21 * */ class STS21 : public I2CDevice { public: /*! @brief Enumération de sélection de la précision de la capture de la température. * Plus la précision est haute, plus temps d'acquisition est long. */ enum STS_RES { RES_11 = 3, /**< RES_11 pour une résolution sur 11 bits, la plus basse*/ RES_12 = 1, /**< RES_12 pour une résolution sur 12 bits*/ RES_13 = 2, /**< RES_13 pour une résolution sur 13 bits*/ RES_14 = 0 /**< RES_14 pour une résolution sur 14 bits, la plus haute et la résolution par défaut*/ }; /*! Le constructeur de la classe prend en paramètres : * @param addr : l'adresse I2C du périphérique */ STS21(uint8_t addr = 0x4A):I2CDevice(addr), _onChipHeater(false), _stsRes(RES_14) {delay(20);} /*! Le destructeur : * */ ~STS21(){} /*! Initialise le périphérique * @return boolean : true si l'initialisation a fonctionnée, false sinon. * Dans le cas où l'initialisation échoue, vérifier les branchements et/ou l'adresse du périphérique. */ virtual boolean begin(){return I2CDevice::begin();}; /*! Demande l'acquisition d'une température d'une résolution définit via setResolution(). * @param noHold : si true, le périphérique met la ligne SCL au niveau bas pour bloquer le bus I2C durant la mesure de température, sinon le périphérique ne bloque pas le bus durant la mesure. * @return double : la température en °C. */ double getTemperature(boolean noHold = true);//Degré celsius /*! Définit la résolution des mesures de température à l'aide des valeurs STS_RES * @param res : la résolution du type #STS_RES * @return boolean : true si succès, false sinon. */ boolean setResolution(STS_RES res); /*! Active ou désactive le module de chauffe interne. * @param enabled : true pour l'activer, false sinon. * @return boolean : true si succès, false sinon. */ boolean enableOnChipHeater(boolean enabled); /*! Permet de faire un reset du périphérique. * @return boolean : true si succès, false sinon. */ boolean reset(); /*! Permet de connaître l'état de la tension d'alimentation du capteur. Si la tension est inférieure à 2.25V ou non. Permet de détecter un niveau de batterie faible si le module est alimenté par batterie. * @return boolean : true si la tension est inférieure à 2.25V, false sinon. */ boolean lowBattery(); protected: private: uint8_t readUserRegister(); boolean writeUserRegister(uint8_t value); boolean _onChipHeater; STS_RES _stsRes; }; #endif //STS21_H