// Define the number of relays
const int numRelays = 10;
// Define an array to hold the pin numbers for each relay
int relayPins[numRelays] = {23, 22, 21, 19, 18, 5, 17, 16, 4, 2};
int pattern[3][16] = {
{0, 5, 6, 0, 4, 7, 0, 3, 8, 0, 2, 9, 0, 1, 10, 0},
{1, 0, 2, 0, 3, 0, 4, 0, 5, 6, 0, 7, 0, 8, 0,9},
{1, 10, 0, 2, 9, 0, 3, 8, 0, 4, 7, 0, 5, 6, 0} // Corrected size to 16
};
int position = 0;
int myArray[5];
void setup() {
// Set each relay pin as an OUTPUT
Serial.begin(115200);
for (int i = 0; i < numRelays; i++) {
pinMode(relayPins[i], OUTPUT);
}
}
void bubble(int pattern_bubble[], int patternSize) {
Serial.println(patternSize);
// Turn each relay on and off in sequence with a delay
for (int i = 0; i < patternSize; i++) {
if (pattern_bubble[i] != 0) {
int relay = pattern_bubble[i];
myArray[position] = relay;
position++;
} else {
int group = position;
for (int i = 0; i < group; i++) {
if (myArray[i] != 0) {
Serial.println(myArray[i] - 1);
digitalWrite(relayPins[myArray[i] - 1], HIGH); // Turn the relay on
}
}
delay(500);
for (int i = 0; i < group; i++) {
if (myArray[i] != 0) {
Serial.println(myArray[i] - 1);
digitalWrite(relayPins[myArray[i] - 1], LOW); // Turn the relay off
}
}
delay(500);
position = 0;
}
}
}
void loop() {
for(int i = 0; i<2; i++){
int patternSize = sizeof(pattern[i]) / sizeof(pattern[i][0]);
bubble(pattern[i], patternSize);
}
}