### 3x3x3 LED Cube by Eric and Alex

 This is a code for a 3x3x3 LED cube. This cube is run off of 12 pins. To wire this cube, connect all of the anodes on a given level and connect all of the cathodes down vertically in one column. int anode [] ={5, 6, 7, 9, 10, 11, 12, 13, 8};     // sets an aray for lights to be usedint anode2 [] ={8, 13, 12, 11, 10, 9, 7, 6, 5};    // opposeite arayint catone [] ={2, 2, 2, 2, 2, 2, 2, 2, 2};        // negative for bottom levelint cattwo  [] ={3, 3, 3, 3, 3, 3, 3, 3, 3};       // negative for middle levelint catthree [] ={4, 4, 4, 4, 4, 4, 4, 4, 4};      // negative for top levelint x;      //sets variablesint d;int c;void setup () {}void one(int wait)      // bottom level light sequence                        // wait can be defined in the void loop{ for(x=0; x<=8; x++)    // variable for different numbers in                         // the aray corresponding to there place        {      pinMode(anode[x], OUTPUT);    // sets as output      pinMode(catone[x], OUTPUT);      digitalWrite(anode[x], HIGH);  // turns on positives        digitalWrite(catone[x], LOW);  // turns on negatives      delay(wait);                   // if you don't know what delay is your a moron           pinMode(anode[x], INPUT);      //sets them back to inputs so the lights turn off      pinMode(catone[x], INPUT);    }   }void two(int wait){  for(x=0; x<=8; x++)    {      pinMode(anode2[x], OUTPUT);      pinMode(cattwo[x], OUTPUT);      digitalWrite(anode2[x], HIGH);      digitalWrite(cattwo[x], LOW);      delay(wait);      pinMode(anode2[x], INPUT);      pinMode(cattwo[x], INPUT);    }  }void three(int wait){  for(x=0; x<=8; x++)    {      pinMode(anode[x], OUTPUT);      pinMode(catthree[x], OUTPUT);      digitalWrite(anode[x], HIGH);      digitalWrite(catthree[x], LOW);      delay(wait);      pinMode(anode[x], INPUT);      pinMode(catthree[x], INPUT);    }  }  void column(int wait) // loops through columns{ for(x=0; x<=8; x++)  // loops through the aray  {    pinMode(anode[x], OUTPUT);      for(d=1; d<=wait; d++)  // delay on each column     {         for(c=2; c<=4; c++)  // loops through lights on a column        {          pinMode(c, OUTPUT);          digitalWrite(anode[x], HIGH);          digitalWrite(c, LOW);          pinMode(c, INPUT);          delayMicroseconds(100);        }     }  pinMode(anode[x], INPUT);       } }void levelone (int wait)  // turns entire level on{  for(d=1; d<=wait; d++)  {     for(x=0; x<=8; x++)      {        pinMode(anode[x], OUTPUT);        pinMode(catone[x], OUTPUT);        digitalWrite(anode[x], HIGH);        digitalWrite(catone[x], LOW);        delayMicroseconds(100);        // loops really fast so it looks like        pinMode(anode[x], INPUT);      // all the lights are one at the same time        pinMode(catone[x], INPUT);      }      }  }void leveltwo (int wait){  for(d=1; d<=wait; d++)  {     for(x=0; x<=8; x++)      {        pinMode(anode[x], OUTPUT);        pinMode(cattwo[x], OUTPUT);        digitalWrite(anode[x], HIGH);        digitalWrite(cattwo[x], LOW);        delayMicroseconds(100);        pinMode(anode[x], INPUT);        pinMode(cattwo[x], INPUT);      }      }  }void levelthree (int wait){  for(d=1; d<=wait; d++)  {     for(x=0; x<=8; x++)      {        pinMode(anode[x], OUTPUT);        pinMode(catthree[x], OUTPUT);        digitalWrite(anode[x], HIGH);        digitalWrite(catthree[x], LOW);        delayMicroseconds(100);        pinMode(anode[x], INPUT);        pinMode(catthree[x], INPUT);      }      }  }void randlight(int repeat) // number of lights turned on{  randomSeed (millis());        // random lights  for (int d=1; d<=repeat; d++)  {  x=random(0,9);  c=random(2,5);        pinMode(anode[x], OUTPUT);        pinMode(c, OUTPUT);        digitalWrite(anode[x], HIGH);        digitalWrite(c, LOW);  delay(100);        pinMode(anode[x], INPUT);        pinMode(c, INPUT);  }  }void loop (){   one(50);   two(50);   three(50);   two(50);   one(50);   column(500);   levelthree(500);   leveltwo(500);   levelone(500);   one(75);   leveltwo(500);   two(75);   levelthree(500);   three(75);   randlight(100);   }