61 lines
1.4 KiB
C++
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;
|
|
}; |