/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Arduino UNO
//
////////////////////////
//
//программа для LED КУБА вместо светодиодной матрицы 8*8 и max7219  //
#include "LedControl.h"//подключаем данную библиотеку
int i=0;int j=0;int k=1;
LedControl LC = LedControl(12, 11, 10, 2);// создаём объект класса для 2 индикаторов
// при этом выводы 12-DIN 11-CLK 10-CS //
void setup() 
{
  pinMode(9,INPUT);
  LC.shutdown(0, false);//выключаем энергосберегающий режим
  LC.setIntensity(0, 0);// устанавливаем интенсивность в 0 единиц между 0 и 15
  LC.clearDisplay(0);//очищаем матрицу 1
  LC.shutdown(1, false);//выключаем энергосберегающий режим
  LC.setIntensity(1, 15);// устанавливаем интенсивность в 15 единиц между 0 и 15
  LC.clearDisplay(1);//очищаем матрицу 2
}
void loop() 
{
 /////////////// ПОСТРОЧНОЕ ВКЛЮЧЕНИЕ ВСЕХ СВЕТОДИОДОВ  ///////////////////
   for (i=0;i<=7;i++) //цикл в цикле для перебора элементов матрицы
  {
  for (j=0;j<=7;j++)
   {
    LC.setLed(1, i, j,1); LC.setLed(0, i, j, 1); delay(100);
   }
   }
   ///////////////  МИГАНИЕ СВЕТОДИОДАМИ ВСЕГО КУБА ////////////////////////
  for (j=0;j<=4;j++)
   {
   LC.shutdown(0, true);LC.shutdown(1, true); delay(300); LC.shutdown(0, false);LC.shutdown(1, false); delay(300);
   }
   /////////////// ПОСТРОЧНОЕ РЕВЕРС-ВЫКЛЮЧЕНИЕ ВСЕХ СВЕТОДИОДОВ  //////////
    for (i=7;i>=0;i--) //цикл в цикле для перебора элементов матрицы
  {
  for (j=7;j>=0;j--)
   {
    LC.setLed(1, i, j,0); LC.setLed(0, i, j, 0); delay(100);
   }
   }
    /////////////// ПОСЛОЙНОЕ ВКЛЮЧЕНИЕ И ВЫКЛЮЧЕНИЕ ВСЕХ СВЕТОДИОДОВ  ///////////////////
   for (i=0;i<=7;i++) //цикл в цикле для перебора элементов матрицы
  {
  for (j=0;j<=7;j++)
   {
    LC.setLed(1, i, j,1); LC.setLed(0, i, j, 1);
    if (i==1&j==7){delay(500);}
    if (i==3&j==7){delay(500);}
    if (i==5&j==7){delay(500);}
    if (i==7&j==7){delay(500);}
    
   }
   }
    for (i=0;i<=7;i++) //цикл в цикле для перебора элементов матрицы
  {
  for (j=0;j<=7;j++)
   {
    LC.setLed(1, i, j,0); LC.setLed(0, i, j, 0);
    if (i==1&j==7){delay(500);}
    if (i==3&j==7){delay(500);}
    if (i==5&j==7){delay(500);}
    if (i==7&j==7){delay(500);}
    
   }
   }
   /////////////// ПОСЛОЙНОЕ ВКЛЮЧЕНИЕ И ВЫКЛЮЧЕНИЕ С ПАУЗОЙ  СВЕТОДИОДОВ СЛОЁВ  ///////////////////
   for (k=1;k<=4;k++)//4 кратное повторение перебора
   {
   for (i=0;i<=7;i++) //цикл в цикле для перебора элементов матрицы
  {
  for (j=0;j<=7;j++)
   {
    LC.setLed(1, i, j,1); LC.setLed(0, i, j, 1);
    if (i==1&j==7){delay(500);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==3&j==7){delay(500);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==5&j==7){delay(500);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==7&j==7){delay(500);LC.clearDisplay(0); LC.clearDisplay(1);}
    
   }
   }
   }
   /////////////// ПОРЯДНОЕ ЧЕРЕЗ ОДИН ВКЛЮЧЕНИЕ И ВЫКЛЮЧЕНИЕ С ПАУЗОЙ  СВЕТОДИОДОВ СЛОЯ  ///////////////////
   for (k=1;k<=4;k++)//4 кратное повторение перебора
   {
   for (i=0;i<=7;i++) //цикл в цикле для перебора элементов матрицы
  {
  for (j=0;j<=7;j=j+2)
   {
    LC.setLed(1, i, j,1); LC.setLed(0, i, j, 1);
    if (i==0&j==6){delay(500);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==1&j==6){delay(500);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==2&j==6){delay(500);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==3&j==6){delay(500);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==4&j==6){delay(500);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==5&j==6){delay(500);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==6&j==6){delay(500);LC.clearDisplay(0); LC.clearDisplay(1);}
    if (i==7&j==6){delay(500);LC.clearDisplay(0); LC.clearDisplay(1);}
    
   }
   }
   }
   
   //////////////////// ОЧИСТКА МАТРИЦ ПЕРЕД НОВЫМ ПОВТОРОМ ПОЛНОГО ЦИКЛА ////////////////
    LC.clearDisplay(0);//очищаем матрицу 1
     LC.clearDisplay(1);//очищаем матрицу 2
   
}
 //
// Конец /
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////