There are some timing kinks that I don't really know how to fix and I don't know if I will figure it out. The IR sensor isn't very reliable but it gets the job done.
Here is a video of the working piece:
And the code:
//array of power and ground pins for specific color LEDs
//white
int pxlArray[4] = {0,2,4,6};
int gndArray[4] = {7,9,11,13};
//red
int predArray[4] = {0,2,4,6};
int gredArray[3] = {8,10,12};
//green
int pgreenArray[3] = {1,3,5};
int ggreenArray[4] = {7,9,11,13};
//blue
int pblueArray[3] = {1,3,5};
int gblueArray[3] = {8,10,12};
//array of power and ground pins for LEDs
int pallArray[7] = {0,1,2,3,4,5,6};
int gallArray[7] = {7,8,9,10,11,12,13};
//randomizing integers
int pxlRandom;
int gndRandom;
//sensor data
int irSensor = A0;
int irSensorData = 0;
int irSensorMap = 0;
void setup () {
//make array of LED pins outputs
for(int ii = 0; ii < 4; ii++) {
pinMode(pxlArray[ii], OUTPUT);
pinMode(gndArray[ii], OUTPUT);
pinMode(predArray[ii], OUTPUT);
pinMode(gredArray[ii], OUTPUT);
pinMode(pgreenArray[ii], OUTPUT);
pinMode(ggreenArray[ii], OUTPUT);
pinMode(pblueArray[ii], OUTPUT);
pinMode(gblueArray[ii], OUTPUT);
pinMode(pallArray[ii], OUTPUT);
pinMode(gallArray[ii], OUTPUT);
}
//make A0 pin an input for IR sensor
pinMode(irSensor, INPUT);
}
void loop () {
//set irSensorData and irSensorMap value
irSensorData = analogRead(irSensor);
irSensorMap = map(irSensorData, 0, 1023, 0, 18);
//if statements
if(irSensorMap == 0) {
pxlRandom = random(0,3);
gndRandom = random(0,4);
for (int aa = 0; aa < 750; aa++) {
digitalWrite(pblueArray[pxlRandom], HIGH);
digitalWrite(gblueArray[gndRandom], HIGH);
delay(1);
digitalWrite(pblueArray[pxlRandom], LOW);
digitalWrite(gblueArray[gndRandom], LOW);
delay(0);
digitalWrite(predArray[pxlRandom], HIGH);
digitalWrite(gredArray[gndRandom], HIGH);
delay(1);
digitalWrite(predArray[pxlRandom], LOW);
digitalWrite(gredArray[gndRandom], LOW);
delay(0);
}
analogRead(irSensor);
delay(250);
}
if(irSensorMap == 1) {
pxlRandom = random(0,3);
gndRandom = random(0,4);
for (int aa = 0; aa < 500; aa++) {
digitalWrite(pblueArray[pxlRandom], HIGH);
digitalWrite(gblueArray[gndRandom], HIGH);
delay(1);
digitalWrite(pblueArray[pxlRandom], LOW);
digitalWrite(gblueArray[gndRandom], LOW);
delay(0);
digitalWrite(pxlArray[pxlRandom], HIGH);
digitalWrite(gndArray[gndRandom], HIGH);
delay(1);
digitalWrite(pxlArray[pxlRandom], LOW);
digitalWrite(gndArray[gndRandom], LOW);
delay(0);
}
analogRead(irSensor);
delay(200);
}
if(irSensorMap == 2) {
pxlRandom = random(0,3);
gndRandom = random(0,4);
for (int aa = 0; aa < 250; aa++) {
digitalWrite(pgreenArray[pxlRandom], HIGH);
digitalWrite(ggreenArray[gndRandom], HIGH);
delay(1);
digitalWrite(pgreenArray[pxlRandom], LOW);
digitalWrite(ggreenArray[gndRandom], LOW);
delay(0);
digitalWrite(pxlArray[pxlRandom], HIGH);
digitalWrite(gndArray[gndRandom], HIGH);
delay(1);
digitalWrite(pxlArray[pxlRandom], LOW);
digitalWrite(gndArray[gndRandom], LOW);
delay(0);
}
analogRead(irSensor);
delay(100);
}
if(irSensorMap == 3) {
pxlRandom = random(0,4);
gndRandom = random(0,4);
for (int aa = 0; aa < 50; aa++) {
digitalWrite(pgreenArray[pxlRandom], HIGH);
digitalWrite(ggreenArray[gndRandom], HIGH);
delay(1);
digitalWrite(pgreenArray[pxlRandom], LOW);
digitalWrite(ggreenArray[gndRandom], LOW);
delay(0);
digitalWrite(predArray[pxlRandom], HIGH);
digitalWrite(gredArray[gndRandom], HIGH);
delay(1);
digitalWrite(predArray[pxlRandom], LOW);
digitalWrite(gredArray[gndRandom], LOW);
delay(0);
}
analogRead(irSensor);
delay(50);
}
if(irSensorMap == 4) {
pxlRandom = random(0,4);
gndRandom = random(0,4);
for (int aa = 0; aa < 10; aa++) {
digitalWrite(predArray[pxlRandom], HIGH);
digitalWrite(gredArray[gndRandom], HIGH);
delay(1);
digitalWrite(predArray[pxlRandom], LOW);
digitalWrite(gredArray[gndRandom], LOW);
delay(0);
digitalWrite(pxlArray[pxlRandom], HIGH);
digitalWrite(gndArray[gndRandom], HIGH);
delay(1);
digitalWrite(pxlArray[pxlRandom], LOW);
digitalWrite(gndArray[gndRandom], LOW);
delay(0);
}
analogRead(irSensor);
delay(10);
}
if(irSensorMap == 5) {
pxlRandom = random(0,4);
gndRandom = random(0,4);
for (int aa = 0; aa < 10; aa++) {
digitalWrite(predArray[pxlRandom], HIGH);
digitalWrite(gredArray[gndRandom], HIGH);
delay(1);
digitalWrite(predArray[pxlRandom], LOW);
digitalWrite(gredArray[gndRandom], LOW);
delay(0);
digitalWrite(pxlArray[pxlRandom], HIGH);
digitalWrite(gndArray[gndRandom], HIGH);
delay(1);
digitalWrite(pxlArray[pxlRandom], LOW);
digitalWrite(gndArray[gndRandom], LOW);
delay(0);
}
analogRead(irSensor);
delay(10);
}
if(irSensorMap >= 6) {
//PARTY!
for(int cc = 0; cc < 10; cc++) {
for (int aa = 6; aa > -1; aa--) {
for(int bb = 0; bb < 7; bb++) {
digitalWrite(pallArray[aa], HIGH);
digitalWrite(gallArray[bb], HIGH);
delay(2);
digitalWrite(pallArray[aa], LOW);
digitalWrite(gallArray[bb], LOW);
delay(0);
digitalWrite(pallArray[bb], HIGH);
digitalWrite(gallArray[aa], HIGH);
delay(2);
digitalWrite(pallArray[bb], LOW);
digitalWrite(gallArray[aa], LOW);
delay(0);
}
}
}
for(int cc = 0; cc < 10; cc++) {
for (int aa = 0; aa < 7; aa++) {
for(int bb = 0; bb < 7; bb++) {
digitalWrite(pallArray[aa], HIGH);
digitalWrite(gallArray[bb], HIGH);
delay(2);
digitalWrite(pallArray[aa], LOW);
digitalWrite(gallArray[bb], LOW);
delay(0);
digitalWrite(pallArray[bb], HIGH);
digitalWrite(gallArray[aa], HIGH);
delay(2);
digitalWrite(pallArray[bb], LOW);
digitalWrite(gallArray[aa], LOW);
delay(0);
}
}
}
analogRead(irSensor);
}
}

