Files
Bewaesserung-Arduino/lib/Pump/pump.h
T
2023-02-14 10:40:11 +01:00

49 lines
1.2 KiB
C++

#pragma once
#include <Arduino.h>
class Pump {
public:
enum Error : uint8_t {
None,
HighPressure,
LowFlow,
Both
};
typedef void (*ErrorFunction)(Error);
Pump(uint8_t pumpPin, uint8_t pressurePin, uint8_t flowPin);
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 setErrorFunction(ErrorFunction ptr) { this->errorFunction = ptr; }
private:
void calculatePressure();
void calculateFlow();
void checkErrors();
Error error = Error::None;
ErrorFunction errorFunction = nullptr;
bool pumpState = false;
uint8_t pumpPin;
uint8_t pressurePin;
uint8_t flowPin;
uint8_t delayLoopMs = 20;
uint16_t flowCounter = 0;
uint32_t lastMillisLoop = 0;
uint32_t lastPressureCalculation = 0;
uint32_t lastFlowCalculation = 0;
uint32_t pumpRunningStart = 0;
};