OVERVIEW

Magic Cube is a tangible cube I created to explore a different way of interactive control and display.

It has six LED matrix display surfaces which can interact with the "Flip actions". It's programmable, so you can get different functions by uploading different applications.

HOW IT WORKS

The cube can sense four different "Flip actions", according to which the controller (Arduino) inside can adjust the display of the LED matrices.

The USB interface is used to upload applications and communicate with software like Flash and Processing.

The six LED matrices are all connected and instructed by the controller. Each LED matrix has 8*8 = 64 LED dots, which can be used to display letters, numbers and some simple icons.

At first, I did paper exploration of the dot lettering and symbols and then translated them into binary code to create a library for programming.

VIDEO DEMOS

In this demo, the cube is used as a tangible controller which can control a music player (a Flash application I created) on the computer. I visualized the menu on the cube. The top matrix displays the current state of the player and the four side matrices indicate the states you can go to. When you flip the cube, the menu will be changed according to the state you choose.


This video shows the idea of interactive display. The letters C, U, B, E are scrolling around on the four side matrices. No matter how you flip, the cube can detect the display to indicate the right side up.


WHAT'S INSIDE

Inside the cube, there are six circuit boards -- one control board and five driver boards and all of them are soldered together.

What the hardest part is circuit design. There were space constraints in fitting five driver boards within the cube. It was also the challenging figuring out the wiring to the controller board.

The Control Board

Since the space in the cube is quite small, it was impossible to place an Arduino board or even the Arduino MINI inside. So I built a more compact Arduino system for the cube.

The Sensor

I also custom built my own sensor which could detect the "Flip actions". I used four mercury switches and placed them along the directions of the four diagonals of the cube, so they can send different signals to Arduino when different surfaces were on the ground.