#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