/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Arduino UNO, Pro Mini
//
////////////////////////
//
//программа для LED куба на шести матрицах 8*8, и max7219 //
#include "LedControl.h"//подключаем данную библиотеку
int i=0;int j=0;int k=0;int k1=0;int k2=0;int k3=0;
int n=50;//50 миллисекунд- единица длительности паузы переключений
int x=1;
int r=3;// количество повторов программ
int r1=1;
LedControl LC = LedControl(12, 11, 10, 6);// создаём объект класса для 6 индикаторов
// при этом выводы 12-DIN 11-CLK 10-CS //
void setup()
{
for (i=0;i<=5;i++)
{
LC.shutdown(i, false);//выключаем энергосберегающий режим
LC.setIntensity(i,4 );// устанавливаем интенсивность в 4 единиц между 0 и 15
LC.clearDisplay(i);//очищаем матрицу i
}
}
void loop()
{
///////////////////////////////////// ПРОГРАММА №1 ///////////////////////////////////
r1=1;
while(r1<=r){r1++;
byte tabl[6]={B11111100,
B01111000,
B00110000,
B00110000,
B01111000,
B11111100};
for (j=0;j<=5;j++) //цикл в цикле для перебора элементов матриц
{
if(k==0)
{k=1;
for (i=0;i<=5;i++)
{
if (x==1){LC.setRow(j, i,tabl[i] );} else {LC.setColumn(j, i,tabl[i] );};delay(2*n);
LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);
}}
if(k==1)
{k=0;j++;
for (i=5;i>=0;i--)
{
if (x==1){LC.setRow(j, i,tabl[i] );} else {LC.setColumn(j, i,tabl[i] );};delay(2*n);
LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);
}}
}
delay(5*n);
LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);delay(5*n);x=!x;
///////////////////////////////////// ПРОГРАММА №2 ///////////////////////////////////
byte tabl1[6][6]={B00011000, B00111000, B01111100, B00011000, B01111100, B00111000,
B00110000, B01000100, B00000100, B00101000, B01000000, B01000100,
B01010000, B00000100, B00111000, B01001000, B00111000, B01111000,
B00010000, B00111000, B00000100, B01001000, B00000100, B01000100,
B00010000, B01000000, B01000100, B01111100, B01000100, B01000100,
B01111100, B01111100, B00111000, B00001000, B00111000, B00111000};
for (j=0;j<=5;j++) //цикл в цикле для перебора элементов матриц
{
for (i=0;i<=5;i++)
{
if (x==0) {LC.setRow(j, i,tabl1[i][j] );}else {LC.setRow(j, i,tabl1[i][5-j] );}
}
delay(5*n);
LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);}
}
///////////////////////////////////// ПРОГРАММА №3 ///////////////////////////////////
byte tabl[6]={B10000000,
B11000000,
B11100000,
B11110000,
B11111000,
B11111100};
r1=1;
while(r1<=r){r1++;
for (j=0;j<=5;j=j+2) //цикл в цикле для перебора элементов матриц
{
for (i=0;i<=5;i++)
{
LC.setRow(j, i,tabl[i]);
}
delay(5*n);
LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);
for (i=0;i<=5;i++)
{
LC.setColumn(j+1, i,tabl[i]);
}
delay(5*n);
LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);
}
}
///////////////////////////////////// ПРОГРАММА №4 ///////////////////////////////////
r1=1;
while(r1<=r){r1++;
for (j=0;j<=5;j++) //цикл в цикле для перебора элементов матриц
{
for (i=0;i<=5;i++)
{
LC.setLed(0, i, j,1);
}
}
delay(10*n);
for (j=0;j<=5;j++) //цикл в цикле для перебора элементов матриц
{
for (i=0;i<=5;i++)
{
LC.setLed(0, i, j,0);LC.setLed(1, i, j,1);delay(n); LC.setLed(1, i, j,0);LC.setLed(2, i, j,1);delay(n);
LC.setLed(2, i, j,0);LC.setLed(3, i, j,1);delay(n); LC.setLed(3, i, j,0);LC.setLed(4, i, j,1);delay(n);
LC.setLed(4, i, j,0);LC.setLed(5, i, j,1);delay(n);
}
}
delay(10*n);
LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);
}
///////////////////////////////////// ПРОГРАММА №5 ///////////////////////////////////
byte tabl2[6][4]={B11111100, B00000000, B00000000, B11111100,
B10000100, B01111000, B00000000, B11111100,
B10000100, B01001000, B00110000, B11111100,
B10000100, B01001000, B00110000, B11111100,
B10000100, B01111000, B00000000, B11111100,
B11111100, B00000000, B00000000, B11111100};
r1=1;
while(r1<=2*r){r1++;
for (i=0;i<=5;i++)
{
LC.setRow(1, i,tabl2[i][3]);LC.setRow(3, i,tabl2[i][3]);
}
delay(3*n);
LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);
for (i=0;i<=5;i++)
{
LC.setRow(0, i,tabl2[i][2]);LC.setRow(1, i,tabl2[i][1]);LC.setRow(2, i,tabl2[i][0]);
LC.setRow(4, i,tabl2[i][2]);LC.setRow(3, i,tabl2[i][1]);
}
delay(3*n);
LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);
for (i=0;i<=5;i++)
{
LC.setRow(1, i,tabl2[i][3]);LC.setRow(3, i,tabl2[i][3]);
}
delay(3*n);
LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);
for (i=0;i<=5;i++)
{
LC.setRow(0, i,tabl2[i][0]);LC.setRow(1, i,tabl2[i][1]);LC.setRow(2, i,tabl2[i][2]);
LC.setRow(4, i,tabl2[i][0]);LC.setRow(3, i,tabl2[i][1]);
}
delay(3*n);
LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);
}
///////////////////////////////////// ПРОГРАММА №6 ///////////////////////////////////
r1=1;
while(r1<=12*r){r1++;
for (i=0;i<=0;i++)
{ k1=random(0,4); k2=random(0,4);k3=random(0,4);
LC.setLed(k1, k2, k3,1); LC.setLed(k1, k2, k3+1,1);LC.setLed(k1, k2, k3+2,1);LC.setLed(k1, k2+1, k3+2,1);LC.setLed(k1, k2+2, k3+2,1);LC.setLed(k1, k2+2, k3+1,1);LC.setLed(k1, k2+2, k3,1);
LC.setLed(k1, k2+1, k3,1);
LC.setLed(k1+2, k2, k3,1); LC.setLed(k1+2, k2, k3+1,1);LC.setLed(k1+2, k2, k3+2,1);LC.setLed(k1+2, k2+1, k3+2,1);LC.setLed(k1+2, k2+2, k3+2,1);LC.setLed(k1+2, k2+2, k3+1,1);LC.setLed(k1+2, k2+2, k3,1);
LC.setLed(k1+2, k2+1, k3,1);
LC.setLed(k1+1, k2, k3,1); LC.setLed(k1+1, k2, k3+2,1);LC.setLed(k1+1, k2+2, k3+2,1);LC.setLed(k1+1, k2+2, k3,1);delay(3*n);}
LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);
}
///////////////////////////////////// ПРОГРАММА №7 ///////////////////////////////////
r1=1;
while(r1<=4*r){r1++;
for (k1=5;k1>=0;k1--)
{LC.setLed(k1, k1, k1,1);delay(2*n);LC.setLed(k1, k1, k1,0);}k1=0;
LC.setLed(k1, k1+1, k1,1);LC.setLed(k1, k1, k1+1,1);LC.setLed(k1+1, k1, k1,1);delay(2*n);LC.clearDisplay(0);LC.clearDisplay(1);
LC.setLed(k1, k1+2, k1,1);LC.setLed(k1, k1, k1+2,1);LC.setLed(k1+2, k1, k1,1);delay(2*n);LC.clearDisplay(0);LC.clearDisplay(2);
LC.setLed(k1, k1+3, k1,1);LC.setLed(k1, k1, k1+3,1);LC.setLed(k1+3, k1, k1,1);delay(2*n);LC.clearDisplay(0);LC.clearDisplay(3);
LC.setLed(k1, k1+4, k1,1);LC.setLed(k1, k1, k1+4,1);LC.setLed(k1+4, k1, k1,1);delay(2*n);LC.clearDisplay(0);LC.clearDisplay(4);
LC.setLed(k1, k1+5, k1,1);LC.setLed(k1, k1, k1+5,1);LC.setLed(k1+5, k1, k1,1);delay(2*n);LC.clearDisplay(0);LC.clearDisplay(5);
}
///////////////////////////////////// ПРОГРАММА МАТРИЦА ///////////////////////////////////
r1=1;
while(r1<=r){r1++;int tabl2[6][6];
for (j=0;j<=5;j++) //цикл в цикле для перебора элементов матриц
{
for (i=0;i<=5;i++)
{
LC.setLed(0, i, j,1);
}
}
delay(10*n);
//////////////////////////////////////////////////////////////////////////////////////////
for (j=0;j<=5;j++) //цикл в цикле для перебора элементов матриц
{
for (i=0;i<=5;i++)
{
k2=random(0,6); tabl2[i][j]=k2;
for (k1=1;k1<=k2;k1++)
{
LC.setLed(k1-1, i, j,0);LC.setLed(k1, i, j,1);delay(n);
}
}
}
delay(50*n);
/////////////////////////////////////////////////////////////////////////////////////////
for (j=0;j<=5;j++) //цикл в цикле для перебора элементов матриц
{
for (i=0;i<=5;i++)
{
k2=tabl2[i][j];
for (k1=i;k1<=4;k1++)
{
LC.setLed(k2, k1, j,0);LC.setLed(k2, k1+1, j,1);delay(n);
}
}
}
delay(50*n);
LC.clearDisplay(0);LC.clearDisplay(1);LC.clearDisplay(2);
LC.clearDisplay(3);LC.clearDisplay(4);LC.clearDisplay(5);
}
}