Files
Bewaesserung-Arduino/lib/Valve/valve.h
T
2023-07-05 02:38:18 +02:00

41 lines
991 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(uint8_t maxOpen);
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() const;
uint8_t getMaxOpen() const { return this->maxOpen; }
uint16_t getTimeLeft(uint8_t valveNumber);
private:
void setValve(uint8_t valveNumber, bool state);
ShiftRegister* shiftRegister = nullptr;
ValveData valves[MAX_VALVES];
uint8_t maxOpen;
uint8_t valveCount = 0;
uint16_t loopDelay = 1000;
uint32_t loopLastMillis = 0;
};