58 lines
1.9 KiB
C++
58 lines
1.9 KiB
C++
#ifndef MEASUREUNIT_H
|
|
#define MEASUREUNIT_H
|
|
#include "Ads1115.h"
|
|
#include "ThermistorSetting.h"
|
|
|
|
//#define DEBUG_TEMP
|
|
|
|
class MeasureUnit
|
|
{
|
|
public:
|
|
enum ERROR {OK = 0, MALLOC_ERR = 1};
|
|
MeasureUnit(uint8_t *analogInput, uint16_t thermistorCount, uint64_t precResistor, ThermistorSetting thermistorSetting, Adc &adc);
|
|
~MeasureUnit();
|
|
void init();
|
|
void run();
|
|
void startOffsetComputing();
|
|
void setOffsetIteration(uint8_t iteration);
|
|
void setGlobalTempOffset(double offset);
|
|
void levelTemperaturesOff();
|
|
double getGlobalTempOffset();
|
|
double *getTemperatures();
|
|
double *getROffsetMap();
|
|
|
|
//Async methods
|
|
enum STATE {IDLING, MEASURING, COMPUTING, MEASUREMENT_READY};
|
|
boolean startTemperatureMeasurement();
|
|
boolean isMeasurementReady();
|
|
double *getAsyncTemperatures();
|
|
void levelAsyncTemperaturesOff();
|
|
//End of assync methods
|
|
|
|
ERROR getError(){return _error;}
|
|
|
|
protected:
|
|
private:
|
|
double computeTemperature(double beta, double resistance, double rAt25);
|
|
|
|
double _globalOffset; //Correspond à l'offset global nécessaire afin d'avoir une température qui corresponde à la réalité
|
|
double *_temperatures; //Tableau contenant toutes les températures
|
|
double *_rOffsetMap,*_rOffsetBuffer; //Tableau qui contient les offsets individuels pour chaque thermistance
|
|
double *_resistanceMap; //Tableau qui contient les resistances associées aux thermistances (pour debug seulement)
|
|
uint8_t *_analogInput; //Pointeur qui garde l'adresse du tableau contenant le nom des entrées analogiques
|
|
uint16_t _thermistorCount;
|
|
uint64_t _precResistor;
|
|
ERROR _error;
|
|
|
|
Adc &_adc;
|
|
ThermistorSetting _thermistorSetting;
|
|
|
|
//Async part
|
|
STATE _state;
|
|
uint8_t _channel, _offsetComputeIte,_offsetCounter;
|
|
double _courant, _tension;
|
|
boolean _triggerLevelOff; //Attribut permettant de savoir si un étalonnage a été demandé
|
|
};
|
|
|
|
#endif //MEASUREUNIT_H
|