new code base

This commit is contained in:
2023-03-22 19:36:34 +01:00
parent bd699cd238
commit 66c3d4db74
7 changed files with 160 additions and 210 deletions
+19 -37
View File
@@ -2,60 +2,42 @@
#include <Arduino.h>
class Pump {
public:
enum Error : uint8_t {
None,
HighPressure,
LowFlow,
Both
};
enum Status : uint8_t {
static const uint16_t blinkTime = 1000;
enum State {
Off,
On,
Timer,
Standby,
Failure
Error
};
typedef void (*ErrorFunction)(Error);
Pump(uint8_t pumpPin, uint8_t pressurePin, uint8_t flowPin);
Pump(uint8_t pumpPin, uint8_t pressurePin, uint8_t flowPin, uint8_t errorLedPin);
void loop();
void clearError() { this->error = Error::None; }
bool switchPump(bool state);
void incrementFlowCounter() { this->flowCounter++; };
uint8_t getFlowPin() { return this->flowPin; }
uint32_t getPumpRunningTime();
void activate(uint32_t duration = 0);
void stop();
void clearError();
void setErrorFunction(ErrorFunction ptr) { this->errorFunction = ptr; }
uint16_t getPressure();
uint16_t getRunningTime();
uint16_t getFlow();
State getState() { return this->state; }
private:
void calculatePressure();
void calculateFlow();
void checkErrors();
void controlPump();
void checkSensors();
State state = State::Off;
void setStatus(Status status);
Status lastStatus = Status::Off;
Status currentStatus = Status::Off;
Error error = Error::None;
ErrorFunction errorFunction = nullptr;
bool ledState = false;
uint8_t pumpPin;
uint8_t pressurePin;
uint8_t flowPin;
uint8_t delayLoopMs = 20;
uint8_t errorLedPin;
uint16_t flowCounter = 0;
uint16_t pressure = 0;
uint32_t lastMillisLoop = 0;
uint32_t lastPressureCalculation = 0;
uint32_t lastFlowCalculation = 0;
uint32_t pumpRunningStart = 0;
uint32_t startTime;
uint32_t duration;
};