40 lines
884 B
C++
40 lines
884 B
C++
#pragma once
|
|
|
|
#include <shiftregister.h>
|
|
|
|
#define MAX_VALVES 16
|
|
|
|
class Valve {
|
|
public:
|
|
struct ValveData {
|
|
uint8_t pin;
|
|
bool shiftRegister;
|
|
uint8_t duration;
|
|
uint32_t startTime;
|
|
};
|
|
|
|
Valve();
|
|
|
|
void loop();
|
|
|
|
void addShiftRegister(ShiftRegister *shiftRegister);
|
|
void add(uint8_t pinNum, bool shiftRegister);
|
|
|
|
void open(uint8_t valveNumber, uint8_t minutes);
|
|
void close(uint8_t valveNumber);
|
|
void closeAll();
|
|
|
|
uint8_t getNumOfOpen();
|
|
uint8_t getTimeLeft(uint8_t valveNumber);
|
|
|
|
|
|
private:
|
|
void setValve(uint8_t valveNumber, bool state);
|
|
|
|
ShiftRegister* shiftRegister = nullptr;
|
|
|
|
ValveData valves[MAX_VALVES];
|
|
uint8_t valveCount = 0;
|
|
uint16_t loopDelay = 1000;
|
|
uint32_t loopLastMillis = 0;
|
|
}; |