#define delay50 500
int relays[] = {2, 3, 4, 5}; //relay Pins
int num_of_relays;
void setup() {
num_of_relays = sizeof(relays) / sizeof(int);
for (int i = 0; i < num_of_relays; i++) {
pinMode(relays[i], OUTPUT);
}
}
void loop() {
delay(50);
relayOn();
delay(50);
relayOff();
delay(50);
relayOn();
delay(50);
relayOff();
delay(50);
relayOn();
delay(50);
relayOff();
delay(500);
relayOn();
delay(50);
relayOff();
delay(50);
relayOn();
delay(50);
relayOff();
delay(50);
relayOn();
delay(50);
relayOff();
delay(50);
relayOn();
delay(50);
relayOff();
delay(50);
for (int i = 0; i < 5; i++) { pattern1(); }
for (int i = 0; i < 5; i++) { pattern2(); }
for (int i = 0; i < 5; i++) { pattern3(); }
for (int i = 0; i < 5; i++) { pattern4(); }
for (int i = 0; i < 25; i++) { pattern5(); }
for (int i = 0; i < 5; i++) { pattern6(); }
for (int i = 0; i < 15; i++) { pattern7(); }
for (int i = 0; i < 15; i++) { pattern8(); }
for (int i = 0; i < 5; i++) { pattern9(); }
for (int i = 0; i < 5; i++) { pattern10(); }
for (int i = 0; i < 50; i++) { pattern11(); }
for (int i = 0; i < 50; i++) { pattern12(); }
relayOff();
delay(5000);
}
//TURN ON ALL RELAYS
void relayOn() {
for (int i = 0; i < num_of_relays; i++) {
digitalWrite(relays[i], HIGH);
}
}
//TURN OFF ALL RELAYS
void relayOff() {
for (int i = 0; i < num_of_relays; i++) {
digitalWrite(relays[i], LOW);
}
}
//LEFT TO RIGHT
void pattern1() {
for (int i = 0; i < num_of_relays; i++) {
digitalWrite(relays[i], HIGH);
delay(delay50);
digitalWrite(relays[i], LOW);
}
}
//RIGHT TO LEFT
void pattern2() {
for (int i = num_of_relays; i > 0; i--) {
digitalWrite(relays[i - 1], HIGH);
delay(delay50);
digitalWrite(relays[i - 1], LOW);
}
}
//LEFT TO RIGHT FILL
void pattern3() {
for (int i = 0; i < num_of_relays; i++) {
digitalWrite(relays[i], HIGH);
delay(delay50);
}
for (int i = num_of_relays; i > 0; i--) {
digitalWrite(relays[i - 1], LOW);
delay(delay50);
}
}
//RIGHT TO LEFT FILL
void pattern4() {
relayOn();
delay(delay50);
for (int i = 0; i < num_of_relays; i++) {
digitalWrite(relays[i], LOW);
delay(delay50);
}
for (int i = num_of_relays; i > 0; i--) {
digitalWrite(relays[i - 1], HIGH);
delay(delay50);
}
relayOff();
}
//ALTERNATE RELAYS
void pattern5() {
for (int i = 0; i < num_of_relays; i = i + 2) {
digitalWrite(relays[i], HIGH);
if (i + 1 < num_of_relays) digitalWrite(relays[i + 1], LOW);
}
delay(delay50);
for (int i = 0; i < num_of_relays; i = i + 2) {
digitalWrite(relays[i], LOW);
if (i + 1 < num_of_relays) digitalWrite(relays[i + 1], HIGH);
}
delay(delay50);
}
//OSCILLATING RELAYS
void pattern6() {
for (int i = 0; i < num_of_relays; i++) {
digitalWrite(relays[i], HIGH);
delay(delay50);
digitalWrite(relays[i], LOW);
}
delay(delay50);
for (int i = num_of_relays; i > 0; i--) {
digitalWrite(relays[i - 1], HIGH);
delay(delay50);
digitalWrite(relays[i - 1], LOW);
}
}
//INSIDE OUT
void pattern7() {
for (int i = 0; i < num_of_relays / 2; i++) {
digitalWrite(relays[i], HIGH);
digitalWrite(relays[num_of_relays - 1 - i], HIGH);
delay(delay50);
digitalWrite(relays[i], LOW);
digitalWrite(relays[num_of_relays - 1 - i], LOW);
}
}
//OUTSIDE IN
void pattern8() {
for (int i = (num_of_relays / 2) - 1; i >= 0; i--) {
digitalWrite(relays[i], HIGH);
digitalWrite(relays[num_of_relays - 1 - i], HIGH);
delay(delay50);
digitalWrite(relays[i], LOW);
digitalWrite(relays[num_of_relays - 1 - i], LOW);
}
}
//LEFT TO RIGHT 3 RELAYS
void pattern9() {
for (int i = 0; i < num_of_relays + 3; i++) {
if (i < num_of_relays) {
digitalWrite(relays[i], HIGH);
}
if (i > 2) {
digitalWrite(relays[i - 3], LOW);
}
delay(delay50);
}
}
//OSCILLATING 3 RELAYS
void pattern10() {
for (int i = 2; i < num_of_relays; i++) {
if (i == 2) {
digitalWrite(relays[0], HIGH);
digitalWrite(relays[1], HIGH);
}
digitalWrite(relays[i], HIGH);
digitalWrite(relays[i - 3], LOW);
delay(delay50);
}
for (int i = num_of_relays - 4; i > -1; i--) {
digitalWrite(relays[i], HIGH);
digitalWrite(relays[i + 3], LOW);
delay(delay50);
}
}
//RANDOM EFFECT 1
void pattern11() {
int randomnum = random(0, num_of_relays);
digitalWrite(relays[randomnum], HIGH);
delay(delay50);
digitalWrite(relays[randomnum], LOW);
delay(delay50);
}
//RANDOM EFFECT 2
void pattern12() {
int randomon = random(0, num_of_relays);
int randomoff = random(0, num_of_relays);
digitalWrite(relays[randomon], HIGH);
digitalWrite(relays[randomoff], LOW);
delay(delay50);
}