From the lab

← Back to all Labs



Learning maths the physical way

Thursday 07 February


We believe that playing is learning and that studying an abstract subject like mathematics can benefit from physical interactions. By combining a set of cubes representing numbers and operators we want to create a playful way of exploring mathematics. The result should be displayed on it’s own cube at the end of the expression. This could be a fun way for children to get familiar with basic mathematical concepts.

We want cubes of two separate types:

The symbol-cube

  • Has its own symbol, that is a number or an operator
  • Can receive a list of symbols from the previous cube
  • Can send a received list of symbols followed by its own to next cube

The result-cube

  • Can receive a list of symbols from the previous cube
  • Can display a list of symbols

The communication will go from left to right, each cube passing the previous symbols and its own value to the next one.

CubeCulator in action


Each cube contains its own Arduino microcontroller powered by a 9V battery. We don’t want the Arduinos to run while not used so we added a reed-switch and a strong magnet to each cube. This way, the cubes will be switched on by the magnetic field of its siblings magnet.

For communication between the cubes we chose IR. We added an IR-receiver to the left side and an IR-transmitter to the right side of each cube. To show the result on the result-cube, we connected it to an OLED-display.


One issue we found early on is that the microcontroller only has one thread. This means that it only can do one thing at a time. Either it’s sending data, receiving data or writing information to the OLED. This could cause timing-issues if not handled correctly.

We also realized that sending data through IR is quite inaccurate. Even though placing the sender and the receiver close to each other, we sometimes get the wrong value. As an effect of this the chances of getting all the symbols correct increases exponentially with each cube in the set used.

If we get the value right nine out of ten times and we use 4 symbol-cubes, we would get a 66% (0.9^4≈0.66) chance of success (provided that our code runs correctly, and we have no timing issues between sending/receiving). A solution to this might be to change the media of communication to improve the success rate of values transmitted.


We are happy with the result. The cubes work. Although somewhat unstable, we are able to display the result in the last cube from the chain of preceeding symbol-cubes.