1#ifndef RELAYS_DRIVER_BASIC_H
2#define RELAYS_DRIVER_BASIC_H
13 static_assert(N <= 16,
"relaysDriverBasic only supports 16 or fewer relays.");
25 template <
typename T,
size_t n>
29 static_assert(n == N,
"error: please provide the correct number of pins");
30 for (
int pinNumber = 0; pinNumber < N; pinNumber++) {
31 pin[pinNumber] = pins[pinNumber];
39 for (
int i = 0; i < N; i++) {
40 pinMode(
pin[i], OUTPUT);
44 void set(uint16_t bits)
46 for (
byte relay = 0; relay < N; relay++) {
47 bool setState = ((bits >> (relay)) & 1);
48 write(relay, setState);
58 void write(
byte relay,
bool setState)
60 digitalWrite(
pin[relay], setState ==
active);
This class controls an array of relays in a simple way.
Definition: RelaysDriverBasic.h:12
void begin()
this function should be called on startup. It sets up pinmodes.
Definition: RelaysDriverBasic.h:37
RelaysDriverBasic(bool _active, const T(&pins)[n])
constructor.
Definition: RelaysDriverBasic.h:26
uint8_t pin[N]
Definition: RelaysDriverBasic.h:13
bool active
Definition: RelaysDriverBasic.h:17
void write(byte relay, bool setState)
set a specific relay to a state, just to keep the code that actually drives a relay separate
Definition: RelaysDriverBasic.h:58
void set(uint16_t bits)
activate relays corresponding to a bit that's 1.
Definition: RelaysDriverBasic.h:44
This class defines an interface for any class that can control an array of relays.
Definition: RelaysDriver.h:8