This project is a large design improvement over my previous RG LED cube design. These improvements include an extra LED color, custom control circuitry, and a large designer improvement. This project is a joint operation between a good friend, Sam and myself.
Since the cube has an extra color per LED, it will increase the number of color combinations making much more diverse shows. In practice, distinct light mixtures are most effective in shows, therefore with 2 colors (Red/Green), the available colors for the show are Red, Red-Green, and Green.
By adding another color (Blue), the available colors more than doubles to Red, Orange, Green, Teal, Blue, Purple, and White. Obviously more colors is better, but more colors means more complicated control circuitry.
The amount of circuitry required to control this cube is much larger than the previous iteration, and the previous iteration’s circuitry was minimalistic. To remedy this, a custom circuit has been created with this application in mind and was printed through OSH Park. The circuit uses an Arduino Uno chip, the Atmega 328p, which can be programmed using the Arduino environment. The circuit contains shift-bit registers to reduce the amount of processor pins needed to control the lights. The circuit can read to and write from an SD card to store and play shows, it can interface with an accelerometer and gyroscope chip to receive positional information, and it can communicate using an XBee wireless serial communication module allowing remote operation and programming. The circuit uses a simple linear drop regulator to regulate a large range of voltages down to 5V. This supplies the processor and the LEDs with power. The board also contains a number of buttons for control input and a power switch. The circuit works well, but the circuit is only part of the system. To light the LEDs, a controller program and a show designer are needed.
For the designer application, I have chosen to design a program to display a three dimensional view of the LED cube instead of a 2D layer-by-layer designer used in the last iteration. This display will be used to create and view shows in a simulated environment. The initial target environment I have chosen is Unity. For those who don’t already know, Unity is a game development engine which allows rapid game and 2D/3D application design. I plan on using Unity for two reasons: it automates a large amount of 3D programming and will allow me to branch into 3D gaming very quickly (with the possibility of Oculus Rift virtual reality development).
The design picture shown above is currently a bit hard to look at, however, it will be greatly improved. At this point clicking the LEDs will toggle their color. The view can be rotated left, right, up, and down as well as zoomed in and out. Eventually a GUI will be constructed around the cube for the easy development and saving/loading of shows.
The controller program used to run the shows has not been fully developed and will take shape as the designer is completed.
As this project is still in progress, I have not been able to produce any intriguing demonstrations, however, keep checking here for more updates. I am going to begin detailing the process of game creation and 3D application design in Unity as I learn it.