#include #include // allows use of PROGMEM to store patterns in flash #define CUBESIZE 4 #define PLANESIZE CUBESIZE*CUBESIZE // This example uses the timer interrupt to blink an LED // and also demonstrates how to share a variable between // the interrupt and the main program. int dataPin = 2; // The Serial Data Pin to the Shift Register int latchPin = 3; // The Latch Pin to the Shift Register int clockPin = 4; // The Clock Pin to the Shift Register int layerPin[]= {6, 5, 7, 8 }; byte PatternBuf[PLANESIZE]; // saves current pattern from PatternTable int PatternIdx; unsigned int DisplayTime; // time*100ms to display pattern // LED Pattern Table in PROGMEM - last column is display time in 100ms units // TODO this could be a lot more compact but not with binary pattern representation prog_uchar PROGMEM PatternTable[] = { // blink on and off B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 100, // circle full layer at bottom B0000,B0000,B0100,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 20, B0000,B0000,B0110,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 20, B0000,B0010,B0110,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 20, B0000,B0110,B0110,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 20, B0000,B1110,B0110,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 20, B0000,B1110,B1110,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 20, B0000,B1110,B1110,B1000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 20, B0000,B1110,B1110,B1100, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 20, B0000,B1110,B1110,B1110, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 20, B0000,B1110,B1110,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 20, B0000,B1110,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 20, B0000,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 20, B0001,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 20, B0011,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 20, B0111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 20, B1111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 20, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 20, // circle full layer at bottom B0000,B0000,B0100,B0000, B0000,B0000,B0100,B0000, B0000,B0000,B0100,B0000, B0000,B0000,B0100,B0000, 10, B0000,B0000,B0110,B0000, B0000,B0000,B0110,B0000, B0000,B0000,B0110,B0000, B0000,B0000,B0110,B0000, 10, B0000,B0010,B0110,B0000, B0000,B0010,B0110,B0000, B0000,B0010,B0110,B0000, B0000,B0010,B0110,B0000, 10, B0000,B0110,B0110,B0000, B0000,B0110,B0110,B0000, B0000,B0110,B0110,B0000, B0000,B0110,B0110,B0000, 10, B0000,B1110,B0110,B0000, B0000,B1110,B0110,B0000, B0000,B1110,B0110,B0000, B0000,B1110,B0110,B0000, 10, B0000,B1110,B1110,B0000, B0000,B1110,B1110,B0000, B0000,B1110,B1110,B0000, B0000,B1110,B1110,B0000, 10, B0000,B1110,B1110,B1000, B0000,B1110,B1110,B1000, B0000,B1110,B1110,B1000, B0000,B1110,B1110,B1000, 10, B0000,B1110,B1110,B1100, B0000,B1110,B1110,B1100, B0000,B1110,B1110,B1100, B0000,B1110,B1110,B1100, 10, B0000,B1110,B1110,B1110, B0000,B1110,B1110,B1110, B0000,B1110,B1110,B1110, B0000,B1110,B1110,B1110, 10, B0000,B1110,B1110,B1111, B0000,B1110,B1110,B1111, B0000,B1110,B1110,B1111, B0000,B1110,B1110,B1111, 10, B0000,B1110,B1111,B1111, B0000,B1110,B1111,B1111, B0000,B1110,B1111,B1111, B0000,B1110,B1111,B1111, 10, B0000,B1111,B1111,B1111, B0000,B1111,B1111,B1111, B0000,B1111,B1111,B1111, B0000,B1111,B1111,B1111, 10, B0001,B1111,B1111,B1111, B0001,B1111,B1111,B1111, B0001,B1111,B1111,B1111, B0001,B1111,B1111,B1111, 10, B0011,B1111,B1111,B1111, B0011,B1111,B1111,B1111, B0011,B1111,B1111,B1111, B0011,B1111,B1111,B1111, 10, B0111,B1111,B1111,B1111, B0111,B1111,B1111,B1111, B0111,B1111,B1111,B1111, B0111,B1111,B1111,B1111, 10, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, 10, // loop all borders around B1111,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 5, B0000,B1111,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 5, B0000,B0000,B1111,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 5, B0000,B0000,B0000,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 5, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 5, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B1111, B0000,B0000,B0000,B0000, 5, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B1111, 5, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B1111,B0000, 5, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1111,B0000,B0000, 5, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B1111,B0000,B0000,B0000, 5, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B1111,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 5, B0000,B0000,B0000,B0000, B1111,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 5, // and again B1111,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 2, B0000,B1111,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 2, B0000,B0000,B1111,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 2, B0000,B0000,B0000,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 2, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 2, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B1111, B0000,B0000,B0000,B0000, 2, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B1111, 2, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B1111,B0000, 2, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1111,B0000,B0000, 2, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B1111,B0000,B0000,B0000, 2, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B1111,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 2, B0000,B0000,B0000,B0000, B1111,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 2, B1111,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 2, // all borders B1111,B1001,B1001,B1111, B1001,B0000,B0000,B1001, B1001,B0000,B0000,B1001, B1111,B1001,B1001,B1111, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1001,B1001,B1111, B1001,B0000,B0000,B1001, B1001,B0000,B0000,B1001, B1111,B1001,B1001,B1111, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1001,B1001,B1111, B1001,B0000,B0000,B1001, B1001,B0000,B0000,B1001, B1111,B1001,B1001,B1111, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, // all borders fall down from back top to front bottom B1111,B1001,B1001,B1111, B1001,B0000,B0000,B1001, B1001,B0000,B0000,B1001, B1111,B1001,B1001,B1111, 100, B1111,B1001,B1001,B1111, B1001,B0000,B0000,B1001, B1111,B0000,B0000,B1001, B0000,B1111,B1001,B1111, 8, B1111,B1001,B1001,B1111, B1111,B0000,B0000,B1001, B0000,B1111,B0000,B1001, B0000,B0000,B1111,B1111, 8, B1111,B1001,B1001,B1111, B0000,B1111,B0000,B1001, B0000,B0000,B1111,B1001, B0000,B0000,B0000,B1111, 8, B0000,B1111,B1001,B1111, B0000,B0000,B1111,B1001, B0000,B0000,B0000,B1111, B0000,B0000,B0000,B0000, 8, B0000,B0000,B1111,B1111, B0000,B0000,B0000,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 8, B0000,B0000,B0000,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 8, // 4 at the time to make a block B0000,B0000,B0011,B0011, B0000,B0000,B0011,B0011, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, // left bottom front B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B1100,B1100,B0000,B0000, B1100,B1100,B0000,B0000, 10, // right top, back B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B1100,B1100, B0000,B0000,B1100,B1100, 10, // right top, front B0011,B0011,B0000,B0000, B0011,B0011,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, // left bottom, back B0000,B0000,B1100,B1100, B0000,B0000,B1100,B1100, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, // right bottom front B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0011,B0011,B0000,B0000, B0011,B0011,B0000,B0000, 10, // left top, back B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0011,B0011, B0000,B0000,B0011,B0011, 10, // left top, front B1100,B1100,B0000,B0000, B1100,B1100,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, // right bottom, back // rotate corner 4 leds B0000,B0000,B0011,B0011, B0000,B0000,B0011,B0011, B1100,B1100,B0000,B0000, B1100,B1100,B0000,B0000, 20, // left bottom front and right top, back B0000,B0000,B1100,B1100, B0000,B0000,B1100,B1100, B0011,B0011,B0000,B0000, B0011,B0011,B0000,B0000, 20, // right bottom front and left top, back B1100,B1100,B0000,B0000, B1100,B1100,B0000,B0000, B0000,B0000,B0011,B0011, B0000,B0000,B0011,B0011, 20, // left top, front and right bottom, back B0011,B0011,B0000,B0000, B0011,B0011,B0000,B0000, B0000,B0000,B1100,B1100, B0000,B0000,B1100,B1100, 20, // left bottom, back and right top, front B0000,B0000,B0011,B0011, B0000,B0000,B0011,B0011, B1100,B1100,B0000,B0000, B1100,B1100,B0000,B0000, 15, // left bottom front and right top, back B0000,B0000,B1100,B1100, B0000,B0000,B1100,B1100, B0011,B0011,B0000,B0000, B0011,B0011,B0000,B0000, 15, // right bottom front and left top, back B1100,B1100,B0000,B0000, B1100,B1100,B0000,B0000, B0000,B0000,B0011,B0011, B0000,B0000,B0011,B0011, 15, // left top, front and right bottom, back B0011,B0011,B0000,B0000, B0011,B0011,B0000,B0000, B0000,B0000,B1100,B1100, B0000,B0000,B1100,B1100, 15, // left bottom, back and right top, front B0000,B0000,B0011,B0011, B0000,B0000,B0011,B0011, B1100,B1100,B0000,B0000, B1100,B1100,B0000,B0000, 10, // left bottom front and right top, back B0000,B0000,B1100,B1100, B0000,B0000,B1100,B1100, B0011,B0011,B0000,B0000, B0011,B0011,B0000,B0000, 10, // right bottom front and left top, back B1100,B1100,B0000,B0000, B1100,B1100,B0000,B0000, B0000,B0000,B0011,B0011, B0000,B0000,B0011,B0011, 10, // left top, front and right bottom, back B0011,B0011,B0000,B0000, B0011,B0011,B0000,B0000, B0000,B0000,B1100,B1100, B0000,B0000,B1100,B1100, 10, // left bottom, back and right top, front B0000,B0000,B0011,B0011, B0000,B0000,B0011,B0011, B1100,B1100,B0000,B0000, B1100,B1100,B0000,B0000, 7, // left bottom front and right top, back B0000,B0000,B1100,B1100, B0000,B0000,B1100,B1100, B0011,B0011,B0000,B0000, B0011,B0011,B0000,B0000, 7, // right bottom front and left top, back B1100,B1100,B0000,B0000, B1100,B1100,B0000,B0000, B0000,B0000,B0011,B0011, B0000,B0000,B0011,B0011, 7, // left top, front and right bottom, back B0011,B0011,B0000,B0000, B0011,B0011,B0000,B0000, B0000,B0000,B1100,B1100, B0000,B0000,B1100,B1100, 7, // left bottom, back and right top, front B0000,B0000,B0011,B0011, B0000,B0000,B0011,B0011, B1100,B1100,B0000,B0000, B1100,B1100,B0000,B0000, 5, // left bottom front and right top, back B0000,B0000,B1100,B1100, B0000,B0000,B1100,B1100, B0011,B0011,B0000,B0000, B0011,B0011,B0000,B0000, 5, // right bottom front and left top, back B1100,B1100,B0000,B0000, B1100,B1100,B0000,B0000, B0000,B0000,B0011,B0011, B0000,B0000,B0011,B0011, 5, // left top, front and right bottom, back B0011,B0011,B0000,B0000, B0011,B0011,B0000,B0000, B0000,B0000,B1100,B1100, B0000,B0000,B1100,B1100, 5, // left bottom, back and right top, front B0000,B0000,B0011,B0011, B0000,B0000,B0011,B0011, B1100,B1100,B0000,B0000, B1100,B1100,B0000,B0000, 2, // left bottom front and right top, back B0000,B0000,B1100,B1100, B0000,B0000,B1100,B1100, B0011,B0011,B0000,B0000, B0011,B0011,B0000,B0000, 2, // right bottom front and left top, back B1100,B1100,B0000,B0000, B1100,B1100,B0000,B0000, B0000,B0000,B0011,B0011, B0000,B0000,B0011,B0011, 2, // left top, front and right bottom, back B0011,B0011,B0000,B0000, B0011,B0011,B0000,B0000, B0000,B0000,B1100,B1100, B0000,B0000,B1100,B1100, 2, // left bottom, back and right top, front // bottom layer, to top though middle B1111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 30, B0000,B0110,B0110,B0000, B0000,B0110,B0110,B0000, B0000,B0110,B0110,B0000, B0000,B0110,B0110,B0000, 2, B0000,B0000,B0000,B0000, B0000,B0110,B0110,B0000, B0000,B0110,B0110,B0000, B0000,B0110,B0110,B0000, 2, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0110,B0110,B0000, B0000,B0110,B0110,B0000, 2, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0110,B0110,B0000, 2, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B1111,B1111,B1111,B1111, 20, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, // loop top and bottom corners B0100,B0000,B0000,B0010, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0100,B0000,B0000,B0010, 5, B0010,B0000,B0000,B0100, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0010,B0000,B0000,B0100, 5, B0001,B0000,B0000,B1000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0001,B0000,B0000,B1000, 5, B0000,B0001,B1000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0001,B1000,B0000, 5, B0000,B1000,B0001,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1000,B0001,B0000, 5, B1000,B0000,B0000,B0001, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B1000,B0000,B0000,B0001, 5, // again B0100,B0000,B0000,B0010, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0100,B0000,B0000,B0010, 5, B0010,B0000,B0000,B0100, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0010,B0000,B0000,B0100, 5, B0001,B0000,B0000,B1000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0001,B0000,B0000,B1000, 5, B0000,B0001,B1000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0001,B1000,B0000, 5, B0000,B1000,B0001,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1000,B0001,B0000, 5, B1000,B0000,B0000,B0001, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B1000,B0000,B0000,B0001, 5, // loop up and down full layer B1111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0001,B0000,B0000,B0000, B1111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0001,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B1111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, 10, B0001,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B1111,B1111,B1111,B1111, 10, B0001,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B1111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, 10, B0001,B0000,B0000,B0000, B1111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, // loop left and right full layer B0001,B0001,B0001,B0001, B0001,B0001,B0001,B0001, B0001,B0001,B0001,B0001, B0001,B0001,B0001,B0001, 10, B0010,B0010,B0010,B0010, B0010,B0010,B0010,B0010, B0010,B0010,B0010,B0010, B0010,B0010,B0010,B0010, 10, B0100,B0100,B0100,B0100, B0100,B0100,B0100,B0100, B0100,B0100,B0100,B0100, B0100,B0100,B0100,B0100, 10, B1000,B1000,B1000,B1000, B1000,B1000,B1000,B1000, B1000,B1000,B1000,B1000, B1000,B1000,B1000,B1000, 10, B0100,B0100,B0100,B0100, B0100,B0100,B0100,B0100, B0100,B0100,B0100,B0100, B0100,B0100,B0100,B0100, 10, B0010,B0010,B0010,B0010, B0010,B0010,B0010,B0010, B0010,B0010,B0010,B0010, B0010,B0010,B0010,B0010, 10, B0001,B0001,B0001,B0001, B0001,B0001,B0001,B0001, B0001,B0001,B0001,B0001, B0001,B0001,B0001,B0001, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0001,B0001,B0001,B0001, B0001,B0001,B0001,B0001, B0001,B0001,B0001,B0001, B0001,B0001,B0001,B0001, 10, B1001,B1001,B1001,B1001, B1001,B1001,B1001,B1001, B1001,B1001,B1001,B1001, B1001,B1001,B1001,B1001, 10, B1111,B1111,B1111,B1111, B1001,B1001,B1001,B1001, B1001,B1001,B1001,B1001, B1001,B1001,B1001,B1001, 10, B1111,B1111,B1111,B1111, B1001,B1001,B1001,B1001, B1001,B1001,B1001,B1001, B1111,B1111,B1111,B1111, 10, B1111,B1111,B1111,B1111, B1111,B1001,B1001,B1111, B1111,B1001,B1001,B1111, B1111,B1111,B1111,B1111, 10, B0000,B0000,B0000,B0000, B0000,B0110,B0110,B0000, B0000,B0110,B0110,B0000, B0000,B0000,B0000,B0000, 10, // outer cube, inner cube B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, 10, B0000,B0000,B0000,B0000, B0000,B0110,B0110,B0000, B0000,B0110,B0110,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, 10, B0000,B0000,B0000,B0000, B0000,B0110,B0110,B0000, B0000,B0110,B0110,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, 10, B0000,B0000,B0000,B0000, B0000,B0110,B0110,B0000, B0000,B0110,B0110,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, 10, B0000,B0000,B0000,B0000, B0000,B0110,B0110,B0000, B0000,B0110,B0110,B0000, B0000,B0000,B0000,B0000, 10, // circle layer by layer bottom to top B0000,B0000,B0100,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0110,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0010,B0110,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0110,B0110,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B1110,B0110,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B1110,B1110,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B1110,B1110,B1000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B1110,B1110,B1100, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B1110,B1110,B1110, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B1110,B1110,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B1110,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0001,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0011,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B1111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0100,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0110,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0010,B0110,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0110,B0110,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B1110,B0110,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B1110,B1110,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B1110,B1110,B1000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B1110,B1110,B1100, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B1110,B1110,B1110, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B1110,B1110,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B1110,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0001,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0011,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B1111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0100,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0110,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0010,B0110,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0110,B0110,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1110,B0110,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1110,B1110,B0000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1110,B1110,B1000, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1110,B1110,B1100, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1110,B1110,B1110, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1110,B1110,B1111, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1110,B1111,B1111, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1111,B1111,B1111, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0001,B1111,B1111,B1111, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0011,B1111,B1111,B1111, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B1111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0100,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0110,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0010,B0110,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0110,B0110,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1110,B0110,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1110,B1110,B0000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1110,B1110,B1000, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1110,B1110,B1100, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1110,B1110,B1110, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1110,B1110,B1111, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1110,B1111,B1111, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1111,B1111,B1111, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0001,B1111,B1111,B1111, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0011,B1111,B1111,B1111, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0111,B1111,B1111,B1111, 6, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B1111,B1111,B1111,B1111, 6, B0001,B0000,B0000,B0000, B0001,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0011,B0000,B0000,B0000, B0011,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0011,B0010,B0000,B0000, B0011,B0010,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0011,B0011,B0000,B0000, B0011,B0011,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0110,B0110,B0000,B0000, B0110,B0110,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0110,B0110,B0000,B0000, B0110,B0110,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0110,B0110,B0000, B0000,B0110,B0110,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0110,B0110, B0000,B0000,B0110,B0110, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0011,B0011, B0000,B0000,B0011,B0011, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0001,B0011,B0111, B0000,B0001,B0011,B0111, B0000,B0000,B0001,B0011, 10, B0000,B0000,B0000,B0000, B0000,B0011,B0111,B0111, B0000,B0011,B0111,B0111, B0000,B0001,B0011,B0111, 10, B0000,B0000,B0000,B0000, B0000,B0111,B0111,B0111, B0000,B0111,B0111,B0111, B0000,B0011,B0111,B0111, 10, B0000,B0000,B0000,B0000, B0000,B0111,B0111,B0111, B0000,B0111,B0111,B0111, B0000,B0111,B0111,B0111, 10, B0000,B0000,B0000,B0000, B0000,B1110,B1110,B1110, B0000,B1110,B1110,B1110, B0000,B1110,B1110,B1110, 10, B0000,B1110,B1110,B1110, B0000,B1110,B1110,B1110, B0000,B1110,B1110,B1110, B0000,B0000,B0000,B0000, 10, B0000,B1110,B1110,B1110, B0000,B1110,B1110,B1110, B0000,B1100,B1110,B1110, B0000,B0000,B0000,B0000, 10, B0000,B1110,B1110,B1110, B0000,B1100,B1110,B1110, B0000,B1000,B1100,B1110, B0000,B0000,B0000,B0000, 10, B0000,B1100,B1110,B1110, B0000,B1000,B1100,B1110, B0000,B0000,B1000,B1100, B0000,B0000,B0000,B0000, 10, B0000,B1000,B1100,B1110, B0000,B0000,B1000,B1100, B0000,B0000,B0000,B1000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B1000,B1100, B0000,B0000,B0000,B1000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B1000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B1000,B1000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0000,B1000,B1000,B1000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1000,B1000,B1000,B1000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1100,B1000,B1000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1110,B1000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1110,B0000,B0000,B0000, B0010,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0110,B0000,B0000,B0000, B0011,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0010,B0000,B0000,B0000, B0011,B0001,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0011,B0001,B0001,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0001,B0001,B0001,B0001, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0001,B0001,B0011, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0001,B0111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B1110, B0000,B0000,B0000,B1000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B1100, B0000,B0000,B1000,B1000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B1000, B0000,B0000,B1100,B1000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B1110,B1000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B1111,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0001,B0111,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0001,B0001,B0011,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0001,B0001,B0001,B0000, B0001,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0001,B0001,B0000,B0000, B0011,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0001,B0000,B0000,B0000, B0111,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B1111,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B1110,B1000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B1100,B1100,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B1000,B1110,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B1111,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0001,B0000,B0000, B0000,B0111,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0001,B0000,B0000, B0000,B0001,B0000,B0000, B0000,B0011,B0000,B0000, 10, B0000,B0001,B0000,B0000, B0000,B0001,B0000,B0000, B0000,B0001,B0000,B0000, B0000,B0001,B0000,B0000, 10, B0001,B0001,B0000,B0000, B0000,B0001,B0000,B0000, B0000,B0001,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0011,B0001,B0000,B0000, B0000,B0001,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0111,B0001,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1100,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1110,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1111,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1111,B0001,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1111,B0011,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1111,B0111,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1111,B1111,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1111,B1111,B1000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1111,B1111,B1100, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1111,B1111,B1110, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0111,B0111,B0111,B0111, B1000,B1000,B1000,B1000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0011,B0011,B0011,B0011, B0100,B0100,B0100,B0100, B1000,B1000,B1000,B1000, B0000,B0000,B0000,B0000, 10, B0001,B0001,B0001,B0001, B0010,B0010,B0010,B0010, B0100,B0100,B0100,B0100, B1000,B1000,B1000,B1000, 10, B0001,B0001,B0001,B0001, B0001,B0001,B0001,B0001, B0010,B0010,B0010,B0010, B0100,B0100,B0100,B0100, 10, B0001,B0001,B0001,B0001, B0001,B0001,B0001,B0001, B0001,B0001,B0001,B0001, B0010,B0010,B0010,B0010, 10, B0001,B0001,B0001,B0001, B0001,B0001,B0001,B0001, B0001,B0001,B0001,B0001, B0001,B0001,B0001,B0001, 10, B0010,B0001,B0001,B0001, B0010,B0001,B0001,B0001, B0010,B0001,B0001,B0001, B0010,B0001,B0001,B0001, 10, B0100,B0010,B0001,B0001, B0100,B0010,B0001,B0001, B0100,B0010,B0001,B0001, B0100,B0010,B0001,B0001, 10, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, 10, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, 10, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, 10, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, 10, B0010,B0010,B0100,B0100, B0010,B0010,B0100,B0100, B0010,B0010,B0100,B0100, B0010,B0010,B0100,B0100, 10, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, 10, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, 10, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, 10, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, 10, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, 10, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, 10, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, 10, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, 10, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, 10, B0010,B0010,B0100,B0100, B0010,B0010,B0100,B0100, B0010,B0010,B0100,B0100, B0010,B0010,B0100,B0100, 10, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, 10, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, 10, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, 8, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, 8, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, 8, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, 8, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, 8, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, 8, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, 8, B0010,B0010,B0100,B0100, B0010,B0010,B0100,B0100, B0010,B0010,B0100,B0100, B0010,B0010,B0100,B0100, 8, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, 8, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, 8, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, 8, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, 8, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, 8, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, 8, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, 7, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, 7, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, 7, B0010,B0010,B0100,B0100, B0010,B0010,B0100,B0100, B0010,B0010,B0100,B0100, B0010,B0010,B0100,B0100, 7, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, 7, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, 7, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, 7, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, 7, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, 7, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, 7, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, 6, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, 6, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, 6, B0010,B0010,B0100,B0100, B0010,B0010,B0100,B0100, B0010,B0010,B0100,B0100, B0010,B0010,B0100,B0100, 6, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, 6, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, 6, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, 6, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, 6, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, 6, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, 6, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, 6, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, 6, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, 6, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, 6, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, 5, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, 5, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, 5, B0010,B0010,B0100,B0100, B0010,B0010,B0100,B0100, B0010,B0010,B0100,B0100, B0010,B0010,B0100,B0100, 5, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, B0100,B0100,B0010,B0010, 5, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, B1000,B0100,B0010,B0001, 5, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, B0000,B1100,B0011,B0000, 5, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, B0000,B0011,B1100,B0000, 10, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, 10, B0000,B0010,B0100,B0000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, 10, B0000,B0000,B0000,B0000, B0000,B0010,B0100,B0000, B0001,B0010,B0100,B1000, B0001,B0010,B0100,B1000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0010,B0100,B0000, B0001,B0010,B0100,B1000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0010,B0100,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B1000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B1000, B0000,B0010,B0000,B1000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B1000, B0000,B0010,B0000,B1000, B0000,B0010,B1000,B0000, 10, B0000,B0000,B0000,B1000, B0000,B0010,B0000,B1000, B0000,B0010,B1000,B0000, B0000,B0000,B1000,B0000, 10, B0000,B0010,B0000,B1000, B0000,B0010,B1000,B0000, B0000,B0000,B1000,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0010,B1000,B0000, B0000,B0000,B1000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B1000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0100,B0010,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0110,B0110,B0000, B0000,B0100,B0010,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1001,B0110,B0110,B1001, B0000,B0110,B0110,B0000, B0000,B0100,B0010,B0000, B0000,B0000,B0000,B0000, 10, B1101,B0111,B1110,B1011, B1001,B0110,B0110,B1001, B0000,B0110,B0110,B0000, B0000,B0100,B0010,B0000, 10, B1111,B1111,B1111,B1111, B1101,B0111,B1110,B1011, B1001,B0110,B0110,B1001, B0000,B0110,B0110,B0000, 10, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B1101,B0111,B1110,B1011, B1001,B0110,B0110,B1001, 10, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B1101,B0111,B1110,B1011, 10, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, 10, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, 10, B1111,B1111,B1111,B1111, B1111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B1111,B1111,B1111,B1111, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000, 10, // this is a dummy element for end of table (duration=0) aka !!!DO NOT TOUCH!!! B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, 0 }; unsigned int flag; unsigned int seqCOUNT = 100; //array to hold the data unsigned char cube_data[4][2] = { {B10101010, B10111101}, // layer0 {B00000000, B00000000}, // layer1 {B00000000, B00100000}, // layer2 {B00111000, B00000001} // layer3 }; void setup(void) { pinMode(dataPin, OUTPUT); // Configure Digital Pins pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); for (int i=0; i < 4; i++) { pinMode(layerPin[i], OUTPUT); // Configure Digital Pins digitalWrite(layerPin[i], LOW); // Pull latch LOW to send data } Timer1.initialize(1000); Timer1.attachInterrupt(TIMERupdate); // blinkLED to run every 0.15 seconds } volatile unsigned int layer = 0; // use volatile for shared variables void TIMERupdate(void) { layer++; layer &= 3; seqCOUNT--; flag = 1; } void CUBEupdate() { for (int i=0; i < 4; i++) { digitalWrite(layerPin[i], LOW); // Pull latch LOW } //ground latchPin and hold low for as long as you are transmitting digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, cube_data[layer][0]); shiftOut(dataPin, clockPin, MSBFIRST, cube_data[layer][1]); digitalWrite(latchPin, HIGH); //New layer ON digitalWrite(layerPin[layer], HIGH); // Pull latch LOW to send data }; void loop(void) { //count up routinem if (flag == 1) { flag = 0; CUBEupdate(); if (seqCOUNT == 0) { //seqCOUNT = 150; //Premjesta podatke iz progmem u bafer za prikaz memcpy_P( PatternBuf, PatternTable+PatternIdx, PLANESIZE ); PatternIdx += PLANESIZE; // read DisplayTime from PROGMEM and increment index DisplayTime = pgm_read_byte_near( PatternTable + PatternIdx++ ); seqCOUNT = 15 * DisplayTime; cube_data[0][0] = PatternBuf[0]*16+PatternBuf[1]; cube_data[0][1] = PatternBuf[2]*16+PatternBuf[3]; cube_data[1][0] = PatternBuf[4]*16+PatternBuf[5]; cube_data[1][1] = PatternBuf[6]*16+PatternBuf[7]; cube_data[2][0] = PatternBuf[8]*16+PatternBuf[9]; cube_data[2][1] = PatternBuf[10]*16+PatternBuf[11]; cube_data[3][0] = PatternBuf[12]*16+PatternBuf[13]; cube_data[3][1] = PatternBuf[14]*16+PatternBuf[15]; if (DisplayTime == 0) { PatternIdx = 0; seqCOUNT = 150; } } } }