Files
Bewaesserung-Arduino/lib/Pump/pump.h
T
2023-07-03 17:48:20 +02:00

61 lines
1.4 KiB
C++

#pragma once
#include <Arduino.h>
class Pump {
public:
enum State {
Off,
On,
Timer,
Standby,
Error
};
Pump(uint8_t pumpPin, uint8_t pressurePin, uint8_t flowPin, uint8_t ledPin);
void loop();
void activate(uint32_t duration = 0);
void stop();
void clearError();
uint16_t getPressure();
uint32_t getRunningTime();
uint16_t getFlow();
uint16_t getStatus();
State getState() { return this->state; }
private:
static const uint8_t delayCheckSensor = 50;
static const uint16_t blinkTime = 1000;
static const uint16_t maxPressure = 1000;
static const uint16_t maxMaxPressureTime = 30000;
static const uint16_t delayTimer = 1000;
bool checkSensors();
void handlePins(bool state);
void changeState(State state);
void stateTimer();
void stateStandby();
void stateError();
State state = State::Off;
bool ledState = false;
bool timerStandby = false;
uint8_t pumpPin;
uint8_t pressurePin;
uint8_t flowPin;
uint8_t ledPin;
uint16_t flow;
uint16_t pressure;
uint32_t startTime;
uint32_t duration;
uint32_t lastMillisTimer = 0;
uint32_t lastMillisCheckSensor = 0;
uint32_t maxPressureStart = 0;
};