Midterm Project: CUBEVERSE

Team: Xiaofang Fan, Hyelim Lim, Yuan Chen, Bowen Shen

Cubeverse is a 6*6 inch interactive cube. The player constantly changes the lighting output inside the cube by flipping the cube around in hand. The playful experience helps the player to feel empowered and keep the world in hand.

Snapseed 2.jpg


“Give me a firm spot on which to stand, and I shall move the earth.”
— Archimedes

Most of the time we humans are dissuaded by natural power from making moves. Our team shrinks the world to the size that a hand can hold, inspiring the player. This playful campaign demonstrates that even small actions make a difference. Even a small finger move counts. We hope the player will be inspired and without fear.



By flipping the cube to certain angles, the player dramatically changes the visual in the ball (a.k.a. the “universe” in the ball). There are multiple options available for combining angles and directions.

Concept sketch



Research on sensors: Sensors That can detect movements:

Tilt Sensor
Tilt Sensor - AT407

This AT407 basic tilt switch can easily be used to detect orientation. Inside the can is a ball that make contact with the pins when the case is upright. Tilt the case over and the balls don't touch, thus not making a connection.

Accelerometer Sensor:
Triple Axis Accelerometer Breakout - ADXL335

Breakout board for the 3 axis ADXL335 from Analog Devices.
The sensor has a full sensing range of +/-3g.

tilt sensor.jpg

We chose the accelerometer out of these two options. The accelerometer has more adjustable features than the tilt sensor.

Research on materials

LED strip has high flexibility and controllability. 


Our team chose black translucent acrylic sheets to build the container. Since we could not find readymade ones in the market, we ended up sanding a transparent grey acrylic sheets to achieve our goal.

Surprisingly, finding the right glue is a laborious job.
After testing several kinds of glue, including school glue and hot glue gun, we ended up using acrylic glue to put up the cube-shape container.

Get set up!

Get set up!

Glue all the parts together precisely.

Glue all the parts together precisely.

Structure Design



The final sketch

The final sketch

We're looking for a way that LED lights can blink in a 3-demential area, not just show on 2D flat surfaces. Upon multiple tests, we found that the closer the LEDs to the acrylic plates, the less illusion the lights would offer. In fact, being too close to the surface produces hot spots of light on the surface. We decide to build a structure inside the container to keep the LEDs to the exact position as expected.

We placed all the components onto an opaque black acrylic plate, including LED lights, a circuit board, and batteries. This portable foundation makes our debugging process and other inspections much easier.

Building the container.

Building the container.

Glue down all the components.

Glue down all the components.

Stretch LED lights onto the beams.

Stretch LED lights onto the beams.

Test the illusion effect.

Test the illusion effect.



How the codes work

Code for this project can be found here.

Tilt detection:
The accelerometer reads three values: x, y and z. Through experimentation, we found that the orientation of the tilts could be differentiated by the changes in the 3 values compared to the baseline values (when the cube is sitting flat, upright, and upside down)

serial monitor.png

LED mapping:
After finding a way to detect different tilt orientations, we need to translate it into LED patterns. Since all LEDs are on the same strip, the way to control a particular LED is to call its index [ note that it is Zero-based numbering ] in the array. We've numbered all of the LEDs.

When the cube is tilted, if it is a "edge tilt," the two LEDs on the edge are lit up; if it is a "corner tilt," the LED at the corner is lit up. When the cube sits flat, all of the center LEDs light up.


When we tested the circuit with a laptop, we used hardcoded average baseline values based on observation. From the serial monitor, we noticed that the baseline reading could be slightly different every time, and therefore we thought about a calibration function. Since the fluctuations are insignificant, this function is not a must-have.

However, once we swap the power with a 9V battery, the circuit responded inappropriately to the movements. Our assumption is that the baseline values have changed, so we've had to calibrate them every time the program runs.

This calibration process has two states— “upright” and “upside down”. The baseline values can be slightly different in these two states. The cube automatically starts to calibrate the upright state once it is switched on. When the calibration of the upright side is finished, is the LED lights at the base will be lit up in green. Flip the cube upside down, wait several seconds for the cube to finish the calibration process. Once it’s done, all the LED lights are lit up in green for one second, changed to purple, and start working.


What worked well:

  • The LED lights generally respond to the movement accurately.

  • The dark acrylic surface is well resonated with our concept of the universe.

  • The light is well diffused.

  • The whole object is self-contained. There’s no instruction needed before having hand-on experience.

What didn’t work well, or could be improved:

  • The changing pattern could be more gradual and accurate by calculating how much the cube is getting tilted.

  • It is possible to increase the number of LEDs without worrying that the power might run low, since LED lights are not lighting up at the same time. This feature could also help us create a more gradual change.

  • The effect becomes not as accurate when the cube is sitting on the sides, since we only coded for two states (upright and upside-down).

  • The shadows of the wires and pillars are more obvious than we expected. Could have been improved by increasing the distance between the pillars and the exterior cover, changing the interior design or using a more diffusive material.

  • The behavior of the LEDs could be more lifelike and natural. For example, when there are no movements, the central LEDs could change brightness softly as if it is breathing; when the cube remains inactive for a while, the LEDs get dimmer.

  • The calibration process can be improved. For now, it is not so intuitive and the user can not do it without learning instructions. 

  • Because the LEDs on the strip is only facing one way, it is hard to see the light from other directions.


Week 5: PROJECT: Serial Communication Phase2

Project: A Buzz Wire Maze

Group member: Heyu Zhang, Kimaya Malwade and Yuan Chen

Assignment requirement:
Continued from last week.
The goal for last week: concept, design, circuitry finished
The goal for this week: Processing code, serial communication, testing, iteration finished

Continuing working from last week, the team:

  • finalize the visual design of the game

  • write the program to make a communication between the Arduino and Processing

The Start Screen
The player starts the game by hitting the space bar, getting rid of the “starting” button in the middle of the screen and a small square controlled by sensors (distance sensor along the X-axis, pressure sensor along the Y-axis) appears on the top left corner of the screen.


Adjust the variables by playing with the sensors, the player sends the square to the bottom left of the screen, where the image of “Fin.“ located.

The final image only appears when the player reaches the Fin. point.

The final image only appears when the player reaches the Fin. point.

ATTENTION: Do not let the small square touch any of the blocks on the screen. Otherwise, the square will be sent back to the top right. Game restarts.


The Code
Download the code package here

The Demonstration Video


Week 4: PROJECT: Serial Communication(In Progress)

Project: A Buzz Wire Maze

Group member: Heyu Zhang, Kimaya Malwade and Yuan Chen

Assignment requirement:
1. one example of communicating between the Arduino and Processing
2. the piece should demonstrate a good (or funny) reason for existing

Scary Maze Game

Scary Maze Game

Buzz Wire Game

Buzz Wire Game

Inspired by “Buzz Wire Game“ and “Scary Maze Game”, we are working on making a maze game. The player controls the movement of a small circle on the screen by playing with a distance sensor and a pressure sensor. If any part of the circle touches the barrier(color blocks on the screen), the circle will be forced to get back to the starting point (top left of the canvas) and restart the game.




The Circuit Test

The Schematics

Image from iOS.jpg

the Test Code(Arduino)
(The team use this code to make sure all the components on the Arduino board work.)

the Test Code (Processing)
Let the circle back to top left corner when hit the red block


(To be continued…)

Week 3-2: Make a more complex toy

The Sorting Box: Welcome to Hogwarts!

Team member: Yuan Chen, Hyelim Lim

Harry Potter is a series of fantasy novels written by British author J. K. Rowling. The books have found immense popularity, critical acclaim and commercial success worldwide. They have been made into films later. The books have attracted a wide adult audience as well as younger readers and are often considered cornerstones of modern young adult literature. One of the most impressive highlights in the book (and the films for sure!) is the scene that students are assigned their houses by a talkative sorting hat.

Base on this scene, the team came up with the idea: We should make a “sorting box”.

With an LCD display screen. several buttons, an Arduino board, and some coding, we make the sorting box work!

How the sorting box work:
When the LCD screen turns on, the screen greets the player: “Welcome to Hogwarts!“
The player presses the button, the screen will show the name of the house based on the representative color of each house:

Red Button - “Gryffindor”
Blue Button - “Ravenclaw”
Yellow Button - “Hufflepuff”
Green Button - “Slytherin”

The name of the chosen house will only remain on the screen for 3 seconds.
Then, it will go back to the greeting page. The player can press another button.

The Possible Improvement from this stage:
If we get the chance to improve the project, we will make a real sorting hat. We will mount the screen onto a hat. By putting the hat on the player’s head, a switch will be triggered. The hat will show a random house’s name out of the 4 houses, and the backlight of the screen will light up in the representative color of that house.

The Scheme Image


The Code

Screen Shot 2019-09-24 at 00.15.42.png

Week 3-1: Research Project

LINES - Interactive Sound Art Exhibition

by Anders Lind , 2016


LINES is an interactive sound art exhibition created by Swedish composer Anders Lind in 2016. Lines attached to the wall, on the floor and hanging from the ceiling in combination with sensors and electronics are forming three novel music instruments. No musical experiences are required to perform, while the well-experienced musician or composer finds new musical challenges and opportunities with the instruments.

The ambition with LINES is to enable:

  • new forms of musical interaction

  • an exploration of new artistic expressions

  • provide unique and inspiring musical experiences


The videoclip is taken from Västerbotttens Museum in Umeå 2016.

Week 2: Enhancement to your homemade switch

Project Name: Don't stop drinking (a.k.a "Don't touch me" box)

I do not play with salty water this week, since liquid as a conductor is not very stable. However, I still want to continue the subject of serving food.

The schematic
I want to make a parallel circuit and the switch connect either path to make a complete loop.

When a cup is put on the coaster, the red light is lit up.
Otherwise, the green light goes on continuously.

The vivid image of the circuit

The vivid image of the circuit

The actual schematic.

The actual schematic.

Then, here comes Arduino.

By using Arduino, I can code all these instructions, so that I do not need a green LED light and a red one for my purpose. There is a kind of LED light that the color of light can be changed and controlled by Arduino.

I played around with the assets and made the circuit work.


However, as the sensor is quite heavy, it can’t be mounted onto the ceiling of my box without keeping dropping down. I changed the sensor from a distance sensor to a photoresistor, which is super light weighted.


This works with other object, too.

So, I rename this project “Don’t touch me” box. Basically if an object is put on the box, the red alarm light will be light up..