Помощь по коду. Led колонна 4х4х8

allname
Offline
Зарегистрирован: 20.10.2015

Здравствуйте всем. Собрал я значит, так назовем, "светодиодную колонну" тот-же самый led куб, только наростил сверху еще четыре слоя и вышла колонна.

Подредактировал исходный код под свои нужды:


//initializing and declaring led rows
  int column[16]={13,12,11,10,9,8,7,6,5,4,3,2,50,51,52,53};
//initializing and declaring led layers
  int layer[8]={A7,A6,A5,A4,A3,A2,A1,A0};
  int time = 250;

void setup()
{
  //setting rows to ouput
  for(int i = 0; i<16; i++)
  {
    pinMode(column[i], OUTPUT);
  }
  //setting layers to output
  for(int i = 0; i<8; i++)
  {
    pinMode(layer[i], OUTPUT);
  }
  //seeding random for random pattern
  randomSeed(analogRead(10));
}
//xxxxxxxxxxxxxxxxxxxxFUNCTION LOOPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

void loop()
{
  turnEverythingOff();//turn all off
  flickerOn();
  turnEverythingOn();//turn all on
  delay(time);
  turnOnAndOffAllByLayerUpAndDownNotTimed();
  layerstompUpAndDown();
  turnOnAndOffAllByColumnSideways();
  delay(time);
  aroundEdgeDown();
  turnEverythingOff();
  randomflicker();
  randomRain();
  diagonalRectangle();
  goThroughAllLedsOneAtATime();
  propeller();
  spiralInAndOut();
  flickerOff();
  turnEverythingOff();
  delay(2000);
}


//xxxxxxxxxxxxxxxxxxxxFUNCTIONSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

///////////////////////////////////////////////////////////turn all off
void turnEverythingOff()
 {
   for(int i = 0; i<16; i++)
   {
     digitalWrite(column[i], 1);
   }
   for(int i = 0; i<8; 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<8; 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 = 8; i!=0; i--)
    {
      digitalWrite(layer[i-1], 0);
      delay(x);
    }
    for(int i = 0; i<8; i++)
    {
      digitalWrite(layer[i], 1);
      delay(x);
    }
      for(int i = 0; i<8; i++)
    {
      digitalWrite(layer[i], 0);
      delay(x);
    }
    for(int i = 8; i!=0; i--)
    {
      digitalWrite(layer[i-1], 1);
      delay(x);
    }
  }
}
//////////////////////////turn everything on and off by column sideways
void turnOnAndOffAllByColumnSideways()
{
  int x = 85;
  turnEverythingOff();
  //turn on layers
  for(int i = 0; i<8; i++)
  {digitalWrite(layer[i], 1);}
  for(int y = 0; y<5; y++)
  {
    //turn on 0-3
    for(int i = 0; i<8; i++)
    {digitalWrite(column[i], 0);
      delay(x);}
    //turn on 4-7
    for(int i = 4; i<8; i++)
    {digitalWrite(column[i], 0);
      delay(0);}
    //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<8; i++)
  {
    digitalWrite(layer[i], 0);
  }
  for(int y = 0; y<5; y++)
  {
    for(int count = 0; count<1; count++)
    { 
      for(int i = 0; i<8; i++)
      {
        digitalWrite(layer[i], 1);
        delay(x);
        digitalWrite(layer[i], 0);
      }
      for(int i = 8; i !=0; i--)
      {
        digitalWrite(layer[i-1], 1);
        delay(x);
        digitalWrite(layer[i-1], 0);
      }
    }
    for(int i = 0; i<8; i++)
    {
      digitalWrite(layer[i], 1);
      delay(x);
    }
    for(int i = 8; 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 = 8; 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[14], 0);
      delay(x);
      digitalWrite(column[14], 1);
      digitalWrite(column[15], 0);
      delay(x);
      digitalWrite(column[15], 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 = 30;
  for(int i = 0; i !=750; i+=2)
  {
  int randomLayer = random(0,8);
  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 = 60;
  for(int i = 0; i!=60; i+=2)
  {
    int randomColumn = random(0,16);
    digitalWrite(column[randomColumn], 0);
    digitalWrite(layer[7], 1);
    delay(x);
    digitalWrite(layer[7], 0);
    digitalWrite(layer[6], 1);
    delay(x);
    digitalWrite(layer[6], 0);
    digitalWrite(layer[5], 1);
    delay(x);
    digitalWrite(layer[5], 0);
    digitalWrite(layer[4], 1);
    delay(x);
    digitalWrite(layer[4], 0);
    digitalWrite(layer[3], 1);
    delay(x);
    digitalWrite(layer[3], 0);
    digitalWrite(layer[2], 1);
    delay(x);
    digitalWrite(layer[2], 0);
    digitalWrite(layer[1], 1);
    delay(x);
    digitalWrite(layer[1], 0);
    digitalWrite(layer[0], 1);
    delay(x);
    digitalWrite(layer[0], 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();
    for(int i = 4; i<12; i++)
    {digitalWrite(column[i], 0);}
    digitalWrite(layer[3], 1);
    digitalWrite(layer[4], 1);
    delay(x);
    turnEverythingOff();
    for(int i = 0; i<8; i++)
    {digitalWrite(column[i], 0);}
    digitalWrite(layer[4], 1);
    digitalWrite(layer[5], 1);
    delay(x);
    turnEverythingOff();
    for(int i = 4; i<12; i++)
    {digitalWrite(column[i], 0);}
    digitalWrite(layer[5], 1);
    digitalWrite(layer[6], 1);
    delay(x);
    turnEverythingOff();
    for(int i = 8; i<16; i++)
    {digitalWrite(column[i], 0);}
    digitalWrite(layer[6], 1);
    digitalWrite(layer[7], 1);
    delay(x);
    turnEverythingOff();
    for(int i = 4; i<12; i++)
    {digitalWrite(column[i], 0);}
    digitalWrite(layer[6], 1);
    digitalWrite(layer[7], 1);
    delay(x);
    turnEverythingOff();
    for(int i = 0; i<8; i++)
    {digitalWrite(column[i], 0);}
    digitalWrite(layer[6], 1);
    digitalWrite(layer[7], 1);
    delay(x);
    turnEverythingOff();
    for(int i = 4; i<12; i++)
    {digitalWrite(column[i], 0);}
    digitalWrite(layer[5], 1);
    digitalWrite(layer[6], 1);
    delay(x);
    turnEverythingOff();
    for(int i = 8; i<16; i++)
    {digitalWrite(column[i], 0);}
    digitalWrite(layer[4], 1);
    digitalWrite(layer[5], 1);
    delay(x);
    turnEverythingOff();
    for(int i = 4; i<12; i++)
    {digitalWrite(column[i], 0);}
    digitalWrite(layer[3], 1);
    digitalWrite(layer[4], 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 = 8; 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 = 8; 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 < 8; 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 = 8; 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 < 8; 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);
    }
  }
}

Работает отлично, нареканий нет. Но захотел я туда-же на arduino mega, на которой и собрал все это, воткнуть кнопку, по нажатию которой бы "мигание" и "свечение" останавливалось бы.

Снова подредактировал код:

int column[16]={13,12,11,10,9,8,7,6,5,4,3,2,50,51,52,53};
int layer[8]={A7,A6,A5,A4,A3,A2,A1,A0};
int time = 250;
int button=48;
int flag=0;
void setup()
{
  pinMode(48, INPUT);
  //setting rows to ouput
  for(int i = 0; i<16; i++)
  {
    pinMode(column[i], OUTPUT);
  }
  //setting layers to output
  for(int i = 0; i<8; i++)
  {
    pinMode(layer[i], OUTPUT);
  }
  //seeding random for random pattern
  randomSeed(analogRead(10));
}
//xxxxxxxxxxxxxxxxxxxxFUNCTION LOOPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

void loop()
{
  buttonOnorOff();
  turnEverythingOff();//turn all off
  buttonOnorOff();
  flickerOn();
  buttonOnorOff();
  turnEverythingOn();//turn all on
  delay(time);
  buttonOnorOff();
  turnOnAndOffAllByLayerUpAndDownNotTimed();
  buttonOnorOff();
  layerstompUpAndDown();
  buttonOnorOff();
  turnOnAndOffAllByColumnSideways();
  delay(time);
  buttonOnorOff();
  aroundEdgeDown();
  buttonOnorOff();
  turnEverythingOff();
  buttonOnorOff();
  randomflicker();
  buttonOnorOff();
  randomRain();
  buttonOnorOff();
  diagonalRectangle();
  buttonOnorOff();
  goThroughAllLedsOneAtATime();
  buttonOnorOff();
  propeller();
  buttonOnorOff();
  spiralInAndOut();
  buttonOnorOff();
  flickerOff();
  buttonOnorOff();
  turnEverythingOff();
  delay(500);
}


//xxxxxxxxxxxxxxxxxxxxFUNCTIONSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
void buttonOnorOff()
  {
    if(digitalRead(48)==HIGH&&flag==0)
    {
      turnEverythingOff();
      flag=1;
      buttonOnorOff();
    }
    if(digitalRead(48)==LOW&&flag==1)
    {
      void loop();
      flag=0;
    }
  }
///////////////////////////////////////////////////////////turn all off
void turnEverythingOff()
 {
   for(int i = 0; i<16; i++)
   {
     digitalWrite(column[i], 1);
   }
   for(int i = 0; i<8; 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<8; 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 = 8; i!=0; i--)
    {
      digitalWrite(layer[i-1], 0);
      delay(x);
    }
    for(int i = 0; i<8; i++)
    {
      digitalWrite(layer[i], 1);
      delay(x);
    }
      for(int i = 0; i<8; i++)
    {
      digitalWrite(layer[i], 0);
      delay(x);
    }
    for(int i = 8; i!=0; i--)
    {
      digitalWrite(layer[i-1], 1);
      delay(x);
    }
  }
}
//////////////////////////turn everything on and off by column sideways
void turnOnAndOffAllByColumnSideways()
{
  int x = 85;
  turnEverythingOff();
  //turn on layers
  for(int i = 0; i<8; i++)
  {digitalWrite(layer[i], 1);}
  for(int y = 0; y<5; y++)
  {
    //turn on 0-3
    for(int i = 0; i<8; i++)
    {digitalWrite(column[i], 0);
      delay(x);}
    //turn on 4-7
    for(int i = 4; i<8; i++)
    {digitalWrite(column[i], 0);
      delay(0);}
    //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<8; i++)
  {
    digitalWrite(layer[i], 0);
  }
  for(int y = 0; y<5; y++)
  {
    for(int count = 0; count<1; count++)
    { 
      for(int i = 0; i<8; i++)
      {
        digitalWrite(layer[i], 1);
        delay(x);
        digitalWrite(layer[i], 0);
      }
      for(int i = 8; i !=0; i--)
      {
        digitalWrite(layer[i-1], 1);
        delay(x);
        digitalWrite(layer[i-1], 0);
      }
    }
    for(int i = 0; i<8; i++)
    {
      digitalWrite(layer[i], 1);
      delay(x);
    }
    for(int i = 8; 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 = 8; 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[14], 0);
      delay(x);
      digitalWrite(column[14], 1);
      digitalWrite(column[15], 0);
      delay(x);
      digitalWrite(column[15], 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 = 30;
  for(int i = 0; i !=750; i+=2)
  {
  int randomLayer = random(0,8);
  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 = 60;
  for(int i = 0; i!=60; i+=2)
  {
    int randomColumn = random(0,16);
    digitalWrite(column[randomColumn], 0);
    digitalWrite(layer[7], 1);
    delay(x);
    digitalWrite(layer[7], 0);
    digitalWrite(layer[6], 1);
    delay(x);
    digitalWrite(layer[6], 0);
    digitalWrite(layer[5], 1);
    delay(x);
    digitalWrite(layer[5], 0);
    digitalWrite(layer[4], 1);
    delay(x);
    digitalWrite(layer[4], 0);
    digitalWrite(layer[3], 1);
    delay(x);
    digitalWrite(layer[3], 0);
    digitalWrite(layer[2], 1);
    delay(x);
    digitalWrite(layer[2], 0);
    digitalWrite(layer[1], 1);
    delay(x);
    digitalWrite(layer[1], 0);
    digitalWrite(layer[0], 1);
    delay(x);
    digitalWrite(layer[0], 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();
    for(int i = 4; i<12; i++)
    {digitalWrite(column[i], 0);}
    digitalWrite(layer[3], 1);
    digitalWrite(layer[4], 1);
    delay(x);
    turnEverythingOff();
    for(int i = 0; i<8; i++)
    {digitalWrite(column[i], 0);}
    digitalWrite(layer[4], 1);
    digitalWrite(layer[5], 1);
    delay(x);
    turnEverythingOff();
    for(int i = 4; i<12; i++)
    {digitalWrite(column[i], 0);}
    digitalWrite(layer[5], 1);
    digitalWrite(layer[6], 1);
    delay(x);
    turnEverythingOff();
    for(int i = 8; i<16; i++)
    {digitalWrite(column[i], 0);}
    digitalWrite(layer[6], 1);
    digitalWrite(layer[7], 1);
    delay(x);
    turnEverythingOff();
    for(int i = 4; i<12; i++)
    {digitalWrite(column[i], 0);}
    digitalWrite(layer[6], 1);
    digitalWrite(layer[7], 1);
    delay(x);
    turnEverythingOff();
    for(int i = 0; i<8; i++)
    {digitalWrite(column[i], 0);}
    digitalWrite(layer[6], 1);
    digitalWrite(layer[7], 1);
    delay(x);
    turnEverythingOff();
    for(int i = 4; i<12; i++)
    {digitalWrite(column[i], 0);}
    digitalWrite(layer[5], 1);
    digitalWrite(layer[6], 1);
    delay(x);
    turnEverythingOff();
    for(int i = 8; i<16; i++)
    {digitalWrite(column[i], 0);}
    digitalWrite(layer[4], 1);
    digitalWrite(layer[5], 1);
    delay(x);
    turnEverythingOff();
    for(int i = 4; i<12; i++)
    {digitalWrite(column[i], 0);}
    digitalWrite(layer[3], 1);
    digitalWrite(layer[4], 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 = 8; 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 = 8; 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 < 8; 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 = 8; 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 < 8; 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);
    }
  }
}

И не работает моя кнопка (( 

Задумывалось так, что есть в коде много функций (визуально это как режимы мерцания) среди них есть функция turnEverythingOff(); которая дескать выключает все свечение. Дак по моей задумке должна была после нажатия зацикливаться эта функция (тоесть свечение постоянно выключено) и только после повторного нажатия функция бы прекращала бы свое зацикливание. Не получилось что-то реализовать это. Помогите пожалуйста разобраться, почему так??? 

p.s. за термины не пинайте, может чего и не так понаписал, не програмист я, учусь только.

allname
Offline
Зарегистрирован: 20.10.2015

Упс, забыл свернуть код, извиняюсь.

allname
Offline
Зарегистрирован: 20.10.2015

Все, сам разобрался, дело было в отсутствии задержки в дописанном куске кода. Всем спасибо ))) хотя спасибо то говорить некому