89 lines
3.1 KiB
C++
89 lines
3.1 KiB
C++
/*
|
|
* 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
|