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