77 lines
2.2 KiB
C++
77 lines
2.2 KiB
C++
#pragma once
|
|
|
|
#include <Arduino.h>
|
|
|
|
class Pump {
|
|
public:
|
|
enum State : uint8_t {
|
|
Off = 0,
|
|
On = 1,
|
|
Timer = 2,
|
|
Standby = 3,
|
|
clearErrorHelper = 99,
|
|
PreError = 100,
|
|
Error = 110,
|
|
OnStupid = 200
|
|
};
|
|
|
|
Pump(uint8_t pumpPin, uint8_t pressurePin, uint8_t flowPin, uint8_t ledPin);
|
|
|
|
void loop();
|
|
|
|
void activate(uint32_t duration = 0);
|
|
void activateWithoutSecurity();
|
|
void stop();
|
|
void clearError();
|
|
|
|
uint16_t getPressure() const { return this->pressure; }
|
|
uint32_t getRunningTime() const;
|
|
uint32_t getRemainingTime() const;
|
|
uint16_t getFlow() const { return this->flow; }
|
|
uint8_t getStatus() const { return (uint8_t) this->state; }
|
|
|
|
State getState() const { return this->state; }
|
|
|
|
private:
|
|
static const uint8_t delayCheckSensor = 100;
|
|
static const uint8_t delayReadPressure = 33;
|
|
static const uint16_t minPressure = 400;
|
|
static const uint16_t restartPressure = 250;
|
|
static const uint16_t blinkTime = 1000;
|
|
static const uint16_t delayReadFlow = 1000;
|
|
static const uint16_t maxPressure = 620;
|
|
static const uint16_t maxMaxPressureTime = 10000;
|
|
static const uint16_t maxPreErrorTime = 40000;
|
|
|
|
void readSensorValues();
|
|
bool checkSensorsValues();
|
|
void handlePins(bool state);
|
|
void changeState(State state);
|
|
void stateTimer();
|
|
void stateStandby();
|
|
void stateError();
|
|
void statePreError(bool checkSensors);
|
|
State state = State::Off;
|
|
State lastStatePreError;
|
|
|
|
bool ledState = false;
|
|
bool timerStandby = false;
|
|
|
|
uint8_t pumpPin;
|
|
uint8_t pressurePin;
|
|
uint8_t flowPin;
|
|
uint8_t ledPin;
|
|
|
|
uint16_t delayTimer = 1000;
|
|
uint16_t flow;
|
|
uint16_t pressure;
|
|
|
|
uint32_t startTime;
|
|
uint32_t duration;
|
|
uint32_t lastMillisTimer = 0;
|
|
uint32_t lastMillisCheckSensor = 0;
|
|
uint32_t lastMillisReadPressure = 0;
|
|
uint32_t lastMillisReadFlow = 0;
|
|
uint32_t maxPressureStart = 0;
|
|
uint32_t preErrorStartTime;
|
|
}; |