• 1
    Sketch Code
      int layer[4]={A3,A2,A1,A0}; //initializing and declaring led layers
      int column[16]={13,12,11,10,9,8,7,6,5,4,3,2,1,0,A5,A4}; //initializing and declaring led rows
      int time = 250;
    
      
     
    void setup()
    {
      
      for(int i = 0; i<16; i++)   
      {
        pinMode(column[i], OUTPUT);  //setting rows to ouput
      }
      
      for(int i = 0; i<4; i++)
      {
        pinMode(layer[i], OUTPUT);  //setting layers to output
      }
      
      randomSeed(analogRead(10));  //seeding random for random pattern
    }
    
    void loop()
    {
      turnEverythingOff();
      flickerOn();
      turnEverythingOn();
      delay(time);
      turnOnAndOffAllByLayerUpAndDownNotTimed();
      layerstompUpAndDown();
      spiralInAndOut();
      turnOnAndOffAllByColumnSideways();
      delay(time);
      aroundEdgeDown();
      turnEverythingOff();
      randomflicker();
      randomRain();
      diagonalRectangle();
      goThroughAllLedsOneAtATime();
      propeller();
      spiralInAndOut();
      flickerOff();
      turnEverythingOff();
      delay(2000);
    }
    
    
    //turn all off
    void turnEverythingOff()
     {
       for(int i = 0; i<16; i++)
       {
         digitalWrite(column[i], 1);
       }
       for(int i = 0; i<4; i++)
       {
         digitalWrite(layer[i], 0);
       }
     }
     
    //turn all on
    void turnEverythingOn()
    {
      for(int i = 0; i<16; i++)
      {
        digitalWrite(column[i], 0);
      }
      //turning on layers
      for(int i = 0; i<4; i++)
      {
        digitalWrite(layer[i], 1);
      }
    }
    //turn columns off
    void turnColumnsOff()
    {
      for(int i = 0; i<16; i++)
      {
        digitalWrite(column[i], 1);
      }
    }
    //flicker on
    void flickerOn()
    {
      int i = 150;
      while(i != 0)
      {
        turnEverythingOn();
        delay(i);
        turnEverythingOff();
        delay(i);
        i-= 5;
      }
    }
    //turn everything on and off by layer up and down NOT TIMED
    void turnOnAndOffAllByLayerUpAndDownNotTimed()
    {
      int x = 75;
      for(int i = 5; i != 0; i--)
      {
        turnEverythingOn();
        for(int i = 4; i!=0; i--)
        {
          digitalWrite(layer[i-1], 0);
          delay(x);
        }
        for(int i = 0; i<4; i++)
        {
          digitalWrite(layer[i], 1);
          delay(x);
        }
          for(int i = 0; i<4; i++)
        {
          digitalWrite(layer[i], 0);
          delay(x);
        }
        for(int i = 4; i!=0; i--)
        {
          digitalWrite(layer[i-1], 1);
          delay(x);
        }
      }
    }
    //turn everything on and off by column sideways
    void turnOnAndOffAllByColumnSideways()
    {
      int x = 75;
      turnEverythingOff();
      //turn on layers
      for(int i = 0; i<4; i++)
      {
        digitalWrite(layer[i], 1);
      }
      for(int y = 0; y<3; y++)
      {
        //turn on 0-3
        for(int i = 0; i<4; i++)
        {
          digitalWrite(column[i], 0);
          delay(x);
        }
        //turn on 4-7
        for(int i = 4; i<8; i++)
        {
          digitalWrite(column[i], 0);
          delay(x);
        }
        //turn on 8-11
        for(int i = 8; i<12; i++)
        {
          digitalWrite(column[i], 0);
          delay(x);
        }
        //turn on 12-15
        for(int i = 12; i<16; i++)
        {
          digitalWrite(column[i], 0);
          delay(x);
        }
        //turn off 0-3
        for(int i = 0; i<4; i++)
        {
          digitalWrite(column[i], 1);
          delay(x);
        }
        //turn off 4-7
        for(int i = 4; i<8; i++)
        {
          digitalWrite(column[i], 1);
          delay(x);
        }
        //turn off 8-11
        for(int i = 8; i<12; i++)
        {
          digitalWrite(column[i], 1);
          delay(x);
        }
        //turn off 12-15
        for(int i = 12; i<16; i++)
        {
          digitalWrite(column[i], 1);
          delay(x);
        }
        //turn on 12-15
        for(int i = 12; i<16; i++)
        {
          digitalWrite(column[i], 0);
          delay(x);
        }
        //turn on 8-11
        for(int i = 8; i<12; i++)
        {
          digitalWrite(column[i], 0);
          delay(x);
        }
        //turn on 4-7
        for(int i = 4; i<8; i++)
        {
          digitalWrite(column[i], 0);
          delay(x);
        }
        //turn on 0-3
        for(int i = 0; i<4; i++)
        {
          digitalWrite(column[i], 0);
          delay(x);
        }
        //turn off 12-15
        for(int i = 12; i<16; i++)
        {
          digitalWrite(column[i], 1);
          delay(x);
        }
        //turn off 8-11
        for(int i = 8; i<12; i++)
        {
          digitalWrite(column[i], 1);
          delay(x);
        }
        //turn off 4-7
        for(int i = 4; i<8; i++)
        {
          digitalWrite(column[i], 1);
          delay(x);
        }
        //turn off 0-3
        for(int i = 0; i<4; i++)
        {
          digitalWrite(column[i], 1);
          delay(x);
        }
      }
    }
    //up and down single layer stomp
    void layerstompUpAndDown()
    {
      int x = 75;
      for(int i = 0; i<4; i++)
      {
        digitalWrite(layer[i], 0);
      }
      for(int y = 0; y<5; y++)
      {
        for(int count = 0; count<1; count++)
        { 
          for(int i = 0; i<4; i++)
          {
            digitalWrite(layer[i], 1);
            delay(x);
            digitalWrite(layer[i], 0);
          }
          for(int i = 4; i !=0; i--)
          {
            digitalWrite(layer[i-1], 1);
            delay(x);
            digitalWrite(layer[i-1], 0);
          }
        }
        for(int i = 0; i<4; i++)
        {
          digitalWrite(layer[i], 1);
          delay(x);
        }
        for(int i = 4; i!=0; i--)
        {
          digitalWrite(layer[i-1], 0);
          delay(x);
        }
      }
    }
    //flicker off
    void flickerOff()
    {
      turnEverythingOn();
      for(int i = 0; i!= 150; i+=5)
      {
        turnEverythingOff();
        delay(i+50);
        turnEverythingOn();
        delay(i);
      }
    }
    //around edge of the cube down
    void aroundEdgeDown()
    {
      for(int x = 200; x != 0; x -=50)
      {
        turnEverythingOff();
        for(int i = 4; i != 0; i--)
        {
          digitalWrite(layer[i-1], 1);
          digitalWrite(column[5], 0);
          digitalWrite(column[6], 0);
          digitalWrite(column[9], 0);
          digitalWrite(column[10], 0);
          
          digitalWrite(column[0], 0);
          delay(x);
          digitalWrite(column[0], 1);
          digitalWrite(column[4], 0);
          delay(x);
          digitalWrite(column[4], 1);
          digitalWrite(column[8], 0);
          delay(x);
          digitalWrite(column[8], 1);
          digitalWrite(column[12], 0);
          delay(x);
          digitalWrite(column[12], 1);
          digitalWrite(column[13], 0);
          delay(x);
          digitalWrite(column[13], 1);
          digitalWrite(column[15], 0);
          delay(x);
          digitalWrite(column[15], 1);
          digitalWrite(column[14], 0);
          delay(x);
          digitalWrite(column[14], 1);
          digitalWrite(column[11], 0);
          delay(x);
          digitalWrite(column[11], 1);
          digitalWrite(column[7], 0);
          delay(x);
          digitalWrite(column[7], 1);
          digitalWrite(column[3], 0);
          delay(x);
          digitalWrite(column[3], 1);
          digitalWrite(column[2], 0);
          delay(x);
          digitalWrite(column[2], 1);
          digitalWrite(column[1], 0);
          delay(x);
          digitalWrite(column[1], 1);
        }
      }
    }
    //random flicker
    void randomflicker()
    {
      turnEverythingOff();
      int x = 10;
      for(int i = 0; i !=750; i+=2)
      {
      int randomLayer = random(0,4);
      int randomColumn = random(0,16);
      
      digitalWrite(layer[randomLayer], 1);
      digitalWrite(column[randomColumn], 0);
      delay(x);
      digitalWrite(layer[randomLayer], 0);
      digitalWrite(column[randomColumn], 1);
      delay(x); 
      }
    }
    //random rain
    void randomRain()
    {
      turnEverythingOff();
      int x = 100;
      for(int i = 0; i!=60; i+=2)
      {
        int randomColumn = random(0,16);
        digitalWrite(column[randomColumn], 0);
        digitalWrite(layer[0], 1);
        delay(x+50);
        digitalWrite(layer[0], 0);
        digitalWrite(layer[1], 1);
        delay(x);
        digitalWrite(layer[1], 0);
        digitalWrite(layer[2], 1);
        delay(x);
        digitalWrite(layer[2], 0);
        digitalWrite(layer[3], 1);
        delay(x+50);
        digitalWrite(layer[3], 0);
        digitalWrite(column[randomColumn], 1);
      }
    }
    //diagonal rectangle
    void diagonalRectangle()
    {
      int x = 350;
      turnEverythingOff();
      for(int count = 0; count<5; count++)
      {
        //top left
        for(int i = 0; i<8; i++)
        {
          digitalWrite(column[i], 0);
        }
        digitalWrite(layer[3], 1);
        digitalWrite(layer[2], 1);
        delay(x);
        turnEverythingOff();
        //middle middle
        for(int i = 4; i<12; i++)
        {
          digitalWrite(column[i], 0);
        }
        digitalWrite(layer[1], 1);
        digitalWrite(layer[2], 1);
        delay(x);
        turnEverythingOff();
        //bottom right
        for(int i = 8; i<16; i++)
        {
          digitalWrite(column[i], 0);
        }
        digitalWrite(layer[0], 1);
        digitalWrite(layer[1], 1);
        delay(x);
        turnEverythingOff();
        //bottom middle
        for(int i = 4; i<12; i++)
        {
          digitalWrite(column[i], 0);
        }
        digitalWrite(layer[0], 1);
        digitalWrite(layer[1], 1);
        delay(x);
        turnEverythingOff();
        //bottom left
        for(int i = 0; i<8; i++)
        {
          digitalWrite(column[i], 0);
        }
        digitalWrite(layer[0], 1);
        digitalWrite(layer[1], 1);
        delay(x);
        turnEverythingOff();
        //middle middle
        for(int i = 4; i<12; i++)
        {
          digitalWrite(column[i], 0);
        }
        digitalWrite(layer[1], 1);
        digitalWrite(layer[2], 1);
        delay(x);
        turnEverythingOff();
        //top right
        for(int i = 8; i<16; i++)
        {
          digitalWrite(column[i], 0);
        }
        digitalWrite(layer[2], 1);
        digitalWrite(layer[3], 1);
        delay(x);
        turnEverythingOff();
        //top middle
        for(int i = 4; i<12; i++)
        {
          digitalWrite(column[i], 0);
        }
        digitalWrite(layer[2], 1);
        digitalWrite(layer[3], 1);
        delay(x);
        turnEverythingOff();
      }
      //top left
      for(int i = 0; i<8; i++)
      {
        digitalWrite(column[i], 0);
      }
      digitalWrite(layer[3], 1);
      digitalWrite(layer[2], 1);
      delay(x);
      turnEverythingOff();
    }
    //propeller
    void propeller()
    {
      turnEverythingOff();
      int x = 90;
      for(int y = 4; y>0; y--)
      {
        for(int i = 0; i<6; i++)
        {
          //turn on layer
          digitalWrite(layer[y-1], 1);
          //a1
          turnColumnsOff();
          digitalWrite(column[0], 0);
          digitalWrite(column[5], 0);
          digitalWrite(column[10], 0);
          digitalWrite(column[15], 0);
          delay(x);
          //b1
          turnColumnsOff();
          digitalWrite(column[4], 0);
          digitalWrite(column[5], 0);
          digitalWrite(column[10], 0);
          digitalWrite(column[11], 0);
          delay(x);
          //c1
          turnColumnsOff();
          digitalWrite(column[6], 0);
          digitalWrite(column[7], 0);
          digitalWrite(column[8], 0);
          digitalWrite(column[9], 0);
          delay(x);
          //d1
          turnColumnsOff();
          digitalWrite(column[3], 0);
          digitalWrite(column[6], 0);
          digitalWrite(column[9], 0);
          digitalWrite(column[12], 0);
          delay(x);
          //d2
          turnColumnsOff();
          digitalWrite(column[2], 0);
          digitalWrite(column[6], 0);
          digitalWrite(column[9], 0);
          digitalWrite(column[13], 0);
          delay(x);
          //d3
          turnColumnsOff();
          digitalWrite(column[1], 0);
          digitalWrite(column[5], 0);
          digitalWrite(column[10], 0);
          digitalWrite(column[14], 0);
          delay(x);
        }
      }
      //d4
      turnColumnsOff();
      digitalWrite(column[0], 0);
      digitalWrite(column[5], 0);
      digitalWrite(column[10], 0);
      digitalWrite(column[15], 0);
      delay(x);
    }
    //spiral in and out
    void spiralInAndOut()
    {
      turnEverythingOn();
      int x = 60;
      for(int i = 0; i<6; i++)
      {
        //spiral in clockwise
        digitalWrite(column[0], 1);
        delay(x);
        digitalWrite(column[1], 1);
        delay(x);
        digitalWrite(column[2], 1);
        delay(x);
        digitalWrite(column[3], 1);
        delay(x);
        digitalWrite(column[7], 1);
        delay(x);
        digitalWrite(column[11], 1);
        delay(x);
        digitalWrite(column[15], 1);
        delay(x);
        digitalWrite(column[14], 1);
        delay(x);
        digitalWrite(column[13], 1);
        delay(x);
        digitalWrite(column[12], 1);
        delay(x);
        digitalWrite(column[8], 1);
        delay(x);
        digitalWrite(column[4], 1);
        delay(x);
        digitalWrite(column[5], 1);
        delay(x);
        digitalWrite(column[6], 1);
        delay(x);
        digitalWrite(column[10], 1);
        delay(x);
        digitalWrite(column[9], 1);
        delay(x);
    //spiral out counter clockwise
        digitalWrite(column[9], 0);
        delay(x);
        digitalWrite(column[10], 0);
        delay(x);
        digitalWrite(column[6], 0);
        delay(x);
        digitalWrite(column[5], 0);
        delay(x);
        digitalWrite(column[4], 0);
        delay(x);
        digitalWrite(column[8], 0);
        delay(x);
        digitalWrite(column[12], 0);
        delay(x);
        digitalWrite(column[13], 0);
        delay(x);
        digitalWrite(column[14], 0);
        delay(x);
        digitalWrite(column[15], 0);
        delay(x);
        digitalWrite(column[11], 0);
        delay(x);
        digitalWrite(column[7], 0);
        delay(x);
        digitalWrite(column[3], 0);
        delay(x);
        digitalWrite(column[2], 0);
        delay(x);
        digitalWrite(column[1], 0);
        delay(x);
        digitalWrite(column[0], 0);
        delay(x);
    //spiral in counter clock wise
        digitalWrite(column[0], 1);
        delay(x);
        digitalWrite(column[4], 1);
        delay(x);
        digitalWrite(column[8], 1);
        delay(x);
        digitalWrite(column[12], 1);
        delay(x);
        digitalWrite(column[13], 1);
        delay(x);
        digitalWrite(column[14], 1);
        delay(x);
        digitalWrite(column[15], 1);
        delay(x);
        digitalWrite(column[11], 1);
        delay(x);
        digitalWrite(column[7], 1);
        delay(x);
        digitalWrite(column[3], 1);
        delay(x);
        digitalWrite(column[2], 1);
        delay(x);
        digitalWrite(column[1], 1);
        delay(x);
        digitalWrite(column[5], 1);
        delay(x);
        digitalWrite(column[9], 1);
        delay(x);
        digitalWrite(column[10], 1);
        delay(x);
        digitalWrite(column[6], 1);
        delay(x);
    //spiral out clock wise
        digitalWrite(column[6], 0);
        delay(x);
        digitalWrite(column[10], 0);
        delay(x);
        digitalWrite(column[9], 0);
        delay(x);
        digitalWrite(column[5], 0);
        delay(x);
        digitalWrite(column[1], 0);
        delay(x);
        digitalWrite(column[2], 0);
        delay(x);
        digitalWrite(column[3], 0);
        delay(x);
        digitalWrite(column[7], 0);
        delay(x);
        digitalWrite(column[11], 0);
        delay(x);
        digitalWrite(column[15], 0);
        delay(x);
        digitalWrite(column[14], 0);
        delay(x);
        digitalWrite(column[13], 0);
        delay(x);
        digitalWrite(column[12], 0);
        delay(x);
        digitalWrite(column[8], 0);
        delay(x);
        digitalWrite(column[4], 0);
        delay(x);
        digitalWrite(column[0], 0);
        delay(x);
      }
    }
    //go through all leds one at a time
    void goThroughAllLedsOneAtATime()
    {
      int x = 15;
      turnEverythingOff();
      for(int y = 0; y<5; y++)
      {
        //0-3
        for(int count = 4; count != 0; count--)
        {
          digitalWrite(layer[count-1], 1);
          for(int i = 0; i<4; i++)
          {
            digitalWrite(column[i], 0);
            delay(x);
            digitalWrite(column[i], 1);
            delay(x);
          }
        digitalWrite(layer[count-1], 0);
        }
        //4-7
        for(int count = 0; count < 4; count++)
        {
          digitalWrite(layer[count], 1);
          for(int i = 4; i<8; i++)
          {
            digitalWrite(column[i], 0);
            delay(x);
            digitalWrite(column[i], 1);
            delay(x);
          }
        digitalWrite(layer[count], 0);
        }
        //8-11
        for(int count = 4; count != 0; count--)
        {
          digitalWrite(layer[count-1], 1);
          for(int i = 8; i<12; i++)
          {
            digitalWrite(column[i], 0);
            delay(x);
            digitalWrite(column[i], 1);
            delay(x);
          }
        digitalWrite(layer[count-1], 0);
        }
        //12-15
        for(int count = 0; count < 4; count++)
        {
          digitalWrite(layer[count], 1);
          for(int i = 12; i<16; i++)
          {
            digitalWrite(column[i], 0);
            delay(x);
            digitalWrite(column[i], 1);
            delay(x);
          }
        digitalWrite(layer[count], 0);
        }
      }
    }