Here is the 8 ch code:
int relay1 = 2;
int relay2 = 3;
int relay3 = 4;
int relay4 = 5;
int relay5 = 6;
int relay6 = 7;
int relay7 = 8;
int relay8 = 9;
int sync = 12;
int led = 13;
const int timef = 650;
const int timec = 450;
const int led_delay = 200;
const int led_count = 8;
const int led_pins[led_count] = {2, 3, 4, 5, 6, 7, 8, 9};
void alloff() {
for (int x = 1; x < 10; x++) {
digitalWrite(x, HIGH);
digitalWrite (led, LOW);
digitalWrite (sync, HIGH);
}
}
void randoms() {
for (int o = 0; o <= 30; o++) {
int r = random(1, 4);
int w = random(4, 9);
digitalWrite(led_pins[r], LOW);
digitalWrite(led_pins[w], LOW);
delay(led_delay);
digitalWrite(led_pins[r], HIGH);
digitalWrite(led_pins[w], HIGH);
}
}
void me() {
digitalWrite(relay1, LOW);
delay(timef / 2);
digitalWrite(relay5, LOW);
delay(timef / 2);
alloff();
digitalWrite(relay2, LOW);
delay(timef / 2);
digitalWrite(relay6, LOW);
delay(timef / 2);
alloff();
digitalWrite(relay3, LOW);
delay(timef / 2);
digitalWrite(relay7, LOW);
delay(timef / 2);
alloff();
digitalWrite(relay4, LOW);
delay(timef / 2);
digitalWrite(relay8, LOW);
delay(timef / 2);
alloff();
}
void me2() {
digitalWrite(relay4, LOW);
delay(timef / 2);
digitalWrite(relay8, LOW);
delay(timef / 2);
alloff();
digitalWrite(relay3, LOW);
delay(timef / 2);
digitalWrite(relay7, LOW);
delay(timef / 2);
alloff();
digitalWrite(relay2, LOW);
delay(timef / 2);
digitalWrite(relay6, LOW);
delay(timef / 2);
alloff();
digitalWrite(relay1, LOW);
delay(timef / 2);
digitalWrite(relay5, LOW);
delay(timef / 2);
alloff();
}
void flashx() {
digitalWrite(relay1, LOW);
digitalWrite(relay8, LOW);
delay(timef);
digitalWrite(relay2, LOW);
digitalWrite(relay7, LOW);
delay(timef);
digitalWrite(relay3, LOW);
digitalWrite(relay6, LOW);
delay(timef);
digitalWrite(relay4, LOW);
digitalWrite(relay5, LOW);
delay(timef);
digitalWrite(relay1, HIGH);
digitalWrite(relay8, HIGH);
delay(timef);
digitalWrite(relay2, HIGH);
digitalWrite(relay7, HIGH);
delay(timef);
digitalWrite(relay3, HIGH);
digitalWrite(relay6, HIGH);
delay(timef);
digitalWrite(relay4, HIGH);
digitalWrite(relay5, HIGH);
delay(timef);
alloff();
}
void countrw() {
digitalWrite(relay1, LOW);
digitalWrite(relay7, LOW);
delay(timef);
alloff();
digitalWrite(relay2, LOW);
digitalWrite(relay8, LOW);
delay(timef);
alloff();
digitalWrite(relay3, LOW);
digitalWrite(relay5, LOW);
delay(timef);
alloff();
digitalWrite(relay4, LOW);
digitalWrite(relay6, LOW);
delay(timef);
alloff();
digitalWrite(relay3, LOW);
digitalWrite(relay5, LOW);
delay(timef);
alloff();
digitalWrite(relay2, LOW);
digitalWrite(relay8, LOW);
delay(timef);
alloff();
digitalWrite(relay1, LOW);
digitalWrite(relay7, LOW);
delay(timef);
alloff();
}
void flash12() {
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
delay(timef);
}
void flash13() {
digitalWrite(relay1, LOW);
digitalWrite(relay3, LOW);
delay(timef);
}
void flash14() {
digitalWrite(relay1, LOW);
digitalWrite(relay4, LOW);
delay(timef);
}
void flash23() {
digitalWrite(relay2, LOW);
digitalWrite(relay3, LOW);
delay(timef);
}
void flash24() {
digitalWrite(relay2, LOW);
digitalWrite(relay4, LOW);
delay(timef);
}
void flash34() {
digitalWrite(relay3, LOW);
digitalWrite(relay4, LOW);
delay(timef);
}
void flash56() {
digitalWrite(relay5, LOW);
digitalWrite(relay6, LOW);
delay(timef);
}
void flash57() {
digitalWrite(relay5, LOW);
digitalWrite(relay7, LOW);
delay(timef);
}
void flash58() {
digitalWrite(relay5, LOW);
digitalWrite(relay8, LOW);
delay(timef);
}
void flash67() {
digitalWrite(relay6, LOW);
digitalWrite(relay7, LOW);
delay(timef);
}
void flash68() {
digitalWrite(relay6, LOW);
digitalWrite(relay8, LOW);
delay(timef);
}
void flash78() {
digitalWrite(relay7, LOW);
digitalWrite(relay8, LOW);
delay(timef);
}
void flashr() {
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
digitalWrite(relay3, LOW);
digitalWrite(relay4, LOW);
delay(timef);
}
void flashw() {
digitalWrite(relay5, LOW);
digitalWrite(relay6, LOW);
digitalWrite(relay7, LOW);
digitalWrite(relay8, LOW);
delay(timef);
}
void flashr2() {
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
digitalWrite(relay3, LOW);
digitalWrite(relay4, LOW);
delay(timef / 2);
}
void flashw2() {
digitalWrite(relay5, LOW);
digitalWrite(relay6, LOW);
digitalWrite(relay7, LOW);
digitalWrite(relay8, LOW);
delay(timef / 2);
}
void countupr() {
for (int x = 1; x < 5; x++) {
digitalWrite(x, LOW);
delay(timec);
digitalWrite(x, HIGH);
}
}
void countdownr() {
for (int x = 5; x > 1; x = x - 1) {
digitalWrite(x, LOW);
delay(timec);
digitalWrite(x, HIGH);
}
}
void countupw() {
for (int x = 6; x < 9; x++) {
digitalWrite(x, LOW);
delay(timec);
digitalWrite(x, HIGH);
}
}
void countdownw() {
for (int x = 9; x > 5; x = x - 1) {
digitalWrite(x, LOW);
delay(timec);
digitalWrite(x, HIGH);
}
}
void rst() {
digitalWrite (led, HIGH);
digitalWrite (sync, LOW);
delay (timec);
digitalWrite (led, LOW);
digitalWrite (sync, HIGH);
delay (timec);
}
void setup() {
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
pinMode(relay5, OUTPUT);
pinMode(relay6, OUTPUT);
pinMode(relay7, OUTPUT);
pinMode(relay8, OUTPUT);
pinMode(led, OUTPUT);
pinMode(sync, OUTPUT);
}
void loop() {
rst();
alloff();
me();
alloff();
randoms();
alloff();
me2();
alloff();
me();
alloff();
me2();
alloff();
randoms();
alloff();
countupr();
alloff();
countdownr();
alloff();
countupw();
alloff();
countdownw();
alloff();
flash13();
flash68();
alloff();
flash24();
flash57();
alloff();
flash13();
flash68();
alloff();
flash24();
flash57();
alloff();
randoms();
alloff();
countrw();
alloff();
flashx();
alloff();
countrw();
alloff();
flashx();
alloff();
flash13();
alloff();
flash24();
alloff();
flash13();
alloff();
flash24();
alloff();
flash14();
alloff();
flash23();
alloff();
flash14();
alloff();
flash23();
alloff();
flash57();
alloff();
flash68();
alloff();
flash57();
alloff();
flash68();
alloff();
flash58();
alloff();
flash67();
alloff();
flash58();
alloff();
flash67();
alloff();
flash13();
flash24();
alloff();
flash57();
flash68();
alloff();
flash13();
flash24();
alloff();
flash57();
flash68();
alloff();
flashr();
alloff();
flashw();
alloff();
flashr();
alloff();
flashw();
alloff();
flashr2();
alloff();
flashw2();
alloff();
flashr2();
alloff();
flashw2();
alloff();
flashr2();
alloff();
flashw2();
alloff();
flashr2();
alloff();
flashw2();
alloff();
}