I built an LED cube using pl9823 8x8x8 for a total of 512 diodes it will run Colorpalette I am a newbie when it comes to programming I can make my own basic sketches and run them my question is this I can get LEDText to work on one layer well using vertical matrix I want to put the text on the sides of the cube but havnt figured out a way YET can the array be modified in such a way I could tell it which sets to use especial when they are not in order ex led[0], led[1] but more like led[0},led{64] etc? or is there an easier way to do this I just need a push in the right direction.
As far as I know, LEDtext only works with a 2d array and I’m unsure of a way to define an array on each side of the cube with the center filled…
You could of course make your own bitmaps in conjunction with a helper function the same way that the smartXY matrix works. Define the 5 visible sides, then create a function to return the correct location. You can take some code directly from the XY matrix then add a depth variable to it (your ‘z’ address).
You would essentially be recreating the LEDtext library with support for a 3rd dimension.
It could be done 
cLEDText relies on cLEDMatrix, so you would need to modify the matrix code and perhaps include a function to switch faces.
An alternative, and perhaps easier, way of doing this would be to define 5 cLEDMatrix arrays of 8x8 and attach them to 5 cLEDText’s. Then after updating the text’s and before your show() you could copy the 5 separate 2D led arrays to the appropriate face in the FastLED led array.
The matrix leds can be accessed with a single index ‘*(m1leds[i])’ or an XY ‘m1leds(x, y)’ when using a declaration such as
cLEDMatrix<8, 8, HORIZONTAL_MATRIX> m1leds;
Thanks for the reply I will start with trying to do one face first at least I know it is possible more reading and experimenting in my future great suggestions Thanks
Am more than happy to help you with some code snippets if you can describe the LED order of your cube 
that’s would be awesome here is how the first layer is laid out
7 15 23 31 39 47 55 63
6 14 22 30 38 46 54 62
5 13 21 29 37 45 53 61
4 12 20 28 36 44 52 60
3 11 19 27 35 43 51 59
2 10 18 26 34 42 50 58
1 9 17 25 33 41 49 57
0 8 16 24 32 40 48 56
this is the first layer all layers follow the same order for example the led right above led[0] would be led[64] and so on
ok, well I decided it was better to modify my cLEDMatrix class for direct access to an external LED array as all the features of both my text & sprite classes would then work.
You will need to do the following global declarations:
#define MATRIX_X 8
#define MATRIX_Y 8
#define MATRIX_Z 8
CRGB leds[MATRIX_X * MATRIX_Y * MATRIX_Z];
cLEDMatrix<MATRIX_X, -MATRIX_Y, VERTICAL_MATRIX, 1, 1> MatrixBase;
cLEDMatrix<MATRIX_X, MATRIX_Y, VERTICAL_MATRIX, 1, 1> MatrixTop;
cLEDMatrix<MATRIX_X, MATRIX_Z, HORIZONTAL_MATRIX, 8, 8> MatrixFront;
cLEDMatrix<-MATRIX_X, MATRIX_Z, HORIZONTAL_MATRIX, 8, 8> MatrixBack;
cLEDMatrix<-MATRIX_Y, MATRIX_Z, HORIZONTAL_MATRIX, 1, 8> MatrixLeft;
cLEDMatrix<MATRIX_Y, MATRIX_Z, HORIZONTAL_MATRIX, 1, 8> MatrixRight;
Then in setup() add these
MatrixBase.SetLEDArray(&leds[0]);
MatrixTop.SetLEDArray(&leds[MATRIX_X * MATRIX_Y * (MATRIX_Z - 1)]);
MatrixFront.SetLEDArray(&leds[0]);
MatrixBack.SetLEDArray(&leds[MATRIX_X - 1]);
MatrixLeft.SetLEDArray(&leds[0]);
MatrixRight.SetLEDArray(&leds[(MATRIX_X - 1) * MATRIX_Y]);
And remember to use the above CRGB leds array in your call to addLeds.
Then in any calls to cLEDText variable’s Init() function pass the appropriate cLEDMatrix variable pointer for the text to appear on that face, e.g.
TextMsg.Init(&MatrixFront, MatrixFront.Width(), TextMsg.FontHeight() + 1, 0, 0);
The modified cLEDMatrix source is here http://pastebin.com/h7hisSYr and here http://pastebin.com/2E0jHsrz
It should be possible to adjust the SetLEDArray calls to allow writing to any slice on the face as well.
I hope the above makes sense, it’s late here, and its been a few hours doing these mods without any way to physically test them myself ![]()
Thanks for your effort I did the modifications including the updated class I may have did something wrong the only thing it will do is led 0 - 7 will flash red green blue white from the setup as expected but nothing else I really dont think I did the .addleds correct i have uploaded the modified sketch here http://pastebin.com/zpkxEWZe
Yes you didn’t 
You only need 1 addLeds call like this:
FastLED.addLeds<CHIPSET, LED_PIN, COLOR_ORDER>(leds, 512);
BTW The matrix mirror, line & circle functions should also work but I have had to disable the shift functions.
I am hitting a wall …when I try FastLED.addLeds<CHIPSET, LED_PIN, COLOR_ORDER>(leds,512 ); the cube does nothing no red green blue white blinks…if I change it to 256 then I will get the blinks but no text appears it keeps blinking the colors over and over again if I load the the unmodified program it still shows the text here is the sketch http://pastebin.com/aYhtmUL8 I really do appreciate your help
What board are you using?
When you compile the sketch with the 512 addLeds what program memory & dynamic memory sizes/percentages are reported after the compile?
You could be running out of space!
I am using the uno R3 after it compiles it says : Binary sketch size 11,480 bytes ( of a 32,256 byte maximum) I am using ide 1.06 if that matters.
It’s not program memory that is the problem, it’s ram! The Uno only has 2048 bytes and the LED array alone is using 1536 bytes, then you have any other variables and stack space for function calls.
ah I never thought of that …time for upgrade any recommendations ?
I use Teensy 3.1’s as cheap, fast, small in size, 256k flash, 64k ram, Cortex M4 core. You can also still use the Arduino dev suite as long as you install the Teensyduino package from pjrc’s site.
I got the new board today and it works perfect thank you but now I have some questions so I can understand how this works 
MatrixFront.SetLEDArray(&leds[0]);
cLEDMatrix<MATRIX_X, MATRIX_Z, HORIZONTAL_MATRIX, 8, 8> MatrixFront; how does it know where to start for z axis is it based off led[0]? sorry if this seem like a basic question
Yes it is, the extra 8,8 in the cLEDMatrix declaration act as extra x,y multipliers. So in your example each x change becomes 1 x 8 and each y change becomes 8 x 8. When these extra parameters are specified the class no longer allocates the LED array so the SetLEDArray call is required to point to the correct base led. So in your example if you changed it to [1] instead of [0] it would use the LEDs just behind the front face.
I hope that makes sense!
thanks it actually cleared it up some I do see how the offset of the x matrix works but I still don’t get how the Z_Matrix works I get The one 8 offset is in cLEDMatrix declaration where does the other 8 come from here #define MATRIX_Z 8?
I use MATRIX_Z to refer to the height of your cube which is why it is used on the sides, front and back. MATRIX_X is the width across the front of your cube and MATRIX_Y is the depth or front to back.
Thanks Aaron for all your help I now understand basically how this works after much playing with code
is it possible to use ScrollingMsg.Init to use 2 differnent matrix say front and left I tried this http://pastebin.com/DnG87SZ4 obviously failed would that way work or would I be better off defining the larger matrix something like MatrixTwosides.SetLEDArray(&leds[(MATRIX_X * MATRIX_Z) * MATRIX_Y]);