Rainbow Pixels

by Team 18 - Spectrum Innovators

A physical and interactive installation to build creative and colourful 3D pixel art with friends

Rainbow Pixels is an interactive colour play and creative 3D drawing installation targeted towards primary school students (6-12 years old). It comes in the form of a table which is covered with blocks that can light up in different colours and be arranged in various ways, providing a fun and visually stimulating experience for the users. The interactions allow users to set the colours of the blocks by scanning different colours from each other's T-shirts, copying and mixing colours between blocks, and pulling the blocks up and down to add contour in creating their art.

The purpose of this project is to stimulate the users' colour perception and creativity. At the same time, the activity requires teamwork, and therefore also advocates children's cooperative learning and social interaction. It is a platform for children to freely experiment with colours and collaborate with friends in a new and physically engaging way.

Technical Description


The table is constructed with 12mm plywood, 12mm particle boards, and cardboard. They are joined together with wood glue and nails, and then furnished with brown acrylic paint. The table has 25 grids (5x5), each housing one pixel block, and the depth of the grids is 10cm. Beneath them, there is space to contain the circuit boards and all the cables. The handles on the sides of the table are covered in white furry fabric to resemble clouds, with rainbow stripes underneath them which are made of colourful foam sheets. The project name written on the front side is made with stickers.

Pixel blocks

The pixel blocks are made by wrapping the inside walls of translucent plastic boxes (5cm x 5cm x 15cm) with baking paper with PVA glue. Every block has a light sensitive resistor (photoresistor) attached to its top flaps from the inside, with the head facing upwards. This photoresistor is the input recipient of the block. To add or mix colours to the boxes or clear them, the users will need to shine some light onto the photoresistor of the block of their choosing with a torch (provided for users). Meanwhile, to copy colors from one block to another, the users need to cover the photoresistor with their hands. Each block also contains a Neopixel strip (6 light units each) for the light output. The Neopixel strip is hung in the middle of the block from its top flaps with the help of clear tape. Both the photoresistors and Neopixel strips are connected to the circuit by soldering a combination of M/M, F/F, F/M cables, standard electronic wires, and tape. The pixel blocks can be moved up and down manually by the users within their grid to achieve different heights. There is no special mechanism behind this.


The user will be holding a scanner which has a colour sensor at the front, which is also connected to the circuit. The scanner is essentially a colour picker, and it is the main input of the system. When the colour sensor detects a colour, it will send the colour's RGB value to the selected pixel block through activation of its photoresistor. The system will then know which block is receiving the action, and indicates this to the user by blinking the block's Neopixel strip. The user finalizes their desired action by pressing the touch sensor on the handle of the scanner. The scanner's case is made of plastic, which is then wrapped with paper and painted in brown to match the table.

Core circuit

An Arduino Mega is used to handle the photoresistors and Neopixels. The data input cables of the Neopixels are connected directly onto the Mega board. All 5V and ground cables are placed on a large breadboard, which is connected to the Mega. 3 Multiplexers (MUX) are placed on the center of the large breadboard, and each of them controls the input received by 8 light sensitive resistors. That saves the use of analog pins, which allows to read the data within only 4 pins, with 1 additional pin for a separate light sensitive resistor. Each photoresistor (25 in total) goes through a 1K resistor. These resistors are lined on small breadboards (3 in total) connected to the large breadboard. The Arduino Mega is powered with batteries. Lastly, the scanner (colour sensor and touch sensor) is connected to an Arduino Uno. Connections are established through soldering M/M, F/F, F/M cables, and standard electronic wires, and taping.


The last component of the prototype is 2 T-shirts provided for the users to wear. The T-shirts have colour patches made of foam sheets attached with hook and loop squares. These colours (red, yellow, blue, green, and black) are pre-programmed to be recognized by the colour sensor. Black is used to clear a block's colour because of the convenience of its RGB value. The project name written on the front side is made with stickers.