I am trying to learn how to define and iterate an array of arrays and I am struggling with syntax. Can anyone help me understand why it is talking about begin when it was never used, and what I am doing wrong? *(pure code no hardware required)
This compiles if you remove;
for (const auto& relayArray : relayGroups) {
for (const auto& relay : relayArray) {
Serial.println(relay.name);
}
}
All the code;
#include <String.h>
class Relay {
public:
Relay(String name, int pin, bool reversed=false, bool state=false)
:name(name), pin(pin_), reversed(reversed_), state(state) {}
String name; int pin; bool reversed; bool state;
void enable() {
if (!reversed_) {
digitalWrite(pin_, HIGH);
} else {
digitalWrite(pin_, LOW);
}
}
void disable() {
if (!reversed_) {
digitalWrite(pin_, LOW);
} else {
digitalWrite(pin_, HIGH);
}
}
void printName() {
Serial.println(name);
}
private:
int pin_;
bool reversed_;
};
Relay valveRelays[] = {
Relay("VALVE_INPUT", 13),
Relay("VALVE_MIXER", 14),
Relay("VALVE_RES_1", 15),
Relay("VALVE_RES_2", 16)
};
Relay pumpRelays[] = {
Relay("PUMP_MAIN", 13),
Relay("PUMP_NUT_1", 14),
Relay("PUMP_NUT_2", 15),
Relay("PUMP_NUT_3", 16),
Relay("PUMP_NUT_4", 17),
Relay("PUMP_NUT_5", 18),
Relay("PUMP_NUT_6", 19),
Relay("PUMP_NUT_7", 20),
};
Relay* relayGroups[2] = {
valveRelays, pumpRelays
};
Relay getRelay(String name) {
for (Relay relay : valveRelays) {
if (relay.name == name) {
return(relay);
}
}
for (Relay relay : pumpRelays ) {
if (relay.name == name) {
return(relay);
}
}
return(Relay("NOT FOUND", 0));
}
void setup() {
delay(1000);
Serial.begin(9600);
delay(1000);
};
bool loopSetup = false;
void loop() {
for (const auto& relayArray : relayGroups) {
for (const auto& relay : relayArray) {
Serial.println(relay.name);
}
}
delay(10000);
};