87 lines
2.7 KiB
C++
87 lines
2.7 KiB
C++
#ifndef MY_CONTROLLER_H_INCLUDED
|
|
#define MY_CONTROLLER_H_INCLUDED
|
|
|
|
#include "../OneWire/OneWire.h"
|
|
#include "../DallasTemperature/DallasTemperature.h"
|
|
#include "../display/display.h"
|
|
#include "../common.h"
|
|
|
|
#define _TEMP_CONVERSION_DELAY 800
|
|
#define _ANALOG_READ_DELAY 500
|
|
// Maximal nötige Anzahl an Temperatur-Einträgen, bevor der interne 12 Bit Timer überläuft
|
|
#define _T_ARR_LEN (409600 / _TEMP_CONVERSION_DELAY) + 1
|
|
// Maximal nötige Anzahl an Druck-Einträgen, bevor der interne 12 Bit Timer überläuft
|
|
#define _P_ARR_LEN (409600 / _ANALOG_READ_DELAY) + 1
|
|
// #define _T_ARR_LEN 255
|
|
// #define _P_ARR_LEN 255
|
|
|
|
class Controller
|
|
{
|
|
private:
|
|
const uint8_t _aPin;
|
|
parameters *_params;
|
|
values *_vals;
|
|
Display *_display;
|
|
PSensor *_pSensor;
|
|
valveStates *_vStates;
|
|
uint8_t _prPin;
|
|
uint8_t _pfPin;
|
|
uint8_t _t1Pin;
|
|
uint8_t _t2Pin;
|
|
|
|
int16_t _t1_arr[_T_ARR_LEN]; // Array, aus dem der Durchschnittswert ermittelt wird
|
|
u16 _t1_c = 0; // Anzahl der Einträge, aus denen der Durchschnitt gebildet wird
|
|
bool _t1_of = false; // Flag, die anzeigt, ob das _t1_arr-Array schon voll ist
|
|
// int16_t _t2_arr[_T_ARR_LEN]; // Array, aus dem der Durchschnittswert ermittelt wird
|
|
u16 _t2_c = 0; // Anzahl der Einträge, aus denen der Durchschnitt gebildet wird
|
|
bool _t2_of = false; // Flag, die anzeigt, ob das _t2_arr-Array schon voll ist
|
|
int16_t _p_arr[_P_ARR_LEN]; // Array, aus dem der Durchschnittswert ermittelt wird
|
|
u16 _p_c = 0; // Anzahl der Einträge, aus denen der Durchschnitt gebildet wird
|
|
bool _p_of = false; // Flag, die anzeigt, ob das _p_arr-Array schon voll ist
|
|
|
|
OneWire _oneWire;
|
|
DallasTemperature _dallas;
|
|
DeviceAddress _tempAddr1;
|
|
|
|
enum States : uint8_t { stateIdle, stateRising, stateFalling };
|
|
States _tState = stateIdle;
|
|
States _pState = stateIdle;
|
|
|
|
bool _initOk = false;
|
|
bool _requestConversion;
|
|
unsigned long _lastConversion;
|
|
unsigned long _lastAnalogRead;
|
|
uint16_t _rawP;
|
|
|
|
void _setT1Valve(uint8_t, States);
|
|
void _setPValves(States);
|
|
|
|
#if _MODBUS == 1
|
|
void _averageTemperature1();
|
|
void _averageTemperature2();
|
|
void _averagePressure();
|
|
#endif
|
|
|
|
public:
|
|
Controller(const uint8_t pAnalaogPin,
|
|
const uint8_t oneWirePin,
|
|
parameters *p,
|
|
values *vals,
|
|
Display *d,
|
|
PSensor *s,
|
|
valveStates *vStates,
|
|
const uint8_t pRisePin,
|
|
const uint8_t t1Pin,
|
|
const uint8_t t2Pin,
|
|
const uint8_t pFallPin
|
|
);
|
|
|
|
void init(bool startup=false);
|
|
void process();
|
|
#if _MODBUS == 1
|
|
void resetAverageCounters();
|
|
#endif
|
|
};
|
|
|
|
#endif // MY_CONTROLLER_H_INCLUDED
|