byte relay[] = {2, 3, 4, 5, 6, 7, 8, 9, 10}; // array of pin numbers
byte pick[8] = {0, 0, 0, 0, 0, 0, 0, 0}; // eight relays
byte activated; // count activated relays
void setup() {
randomSeed(analogRead(A0)); // pseudorandom start
Serial.begin(115200); // start serial comm for serial monitor
for (int i = 0; i < 8; i++) { // count 8...
pinMode(relay[i], OUTPUT); // ... pins to configure for output
}
}
void loop() {
if (activated < 8) { // if all relays not selected...
byte randomNumber = random(8); // random relay, 0 to 7
if (pick[randomNumber] == 0) { // if relay is available...
pick[randomNumber] = 1; // ...make this relay unavailable
delay(random(100, 500));
digitalWrite(relay[randomNumber], HIGH); // energize relay
Serial.print(randomNumber); // show the relay selected
Serial.print(" - relay ");
Serial.println(activated);
activated++;
} else {
Serial.print("repeat - ");
Serial.println(randomNumber);
digitalWrite(relay[8], HIGH);
delay(10);
digitalWrite(relay[8], LOW);
}
}
}