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, 0, 1, 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); zusatz(); 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 = 250; 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 = 200; 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 = 250; 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[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 = 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 = 200; 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 = 130; 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); } } }