Project tutorial
Touch LED Table - Retrogaming And Ambiant Light

Touch LED Table - Retrogaming And Ambiant Light © CC BY-NC-SA

Arbalet is a touch table made of 150 LEDs. Play Tetris Snake or Piano on your coffee table, or develop your own Python apps!

  • 1 comment
  • 56 respects

Components and supplies

Necessary tools and machines

Laser cutter (generic)

Apps and online services

About this project

Arbalet is an ARduino-BAsed LED Table, a flat surface filled with several hundreds of coloured square lights designed for Education, Geeks, and Pleasure. With its limited number of pixels and a DIY touch interface, Arbalet brings our old 80's arcad games back into fashion through a modern, classy, and hackable device.

Arbalet is intended to be easily reproducible, highly customizable, and programmable to create new games, light animations and applications. It's not only a LED table but also an open development platform programmed in Python or even via a visual programming language to teach programming to beginners.

This tutorial describes how to build an Arbalet v2 of 150 pixels with a 6-key touch interface using laser cutting. The full assembly guide is available online. A previous version uses an Ikea-based coffee table.

Step 1: Cut the wooden boards

SVG files are online for 3, and 5 or 6mm MDF boards. You need only one thickness among 5 and 6, depending of the material you find more easily in your local retail store.

Download the SVG files and use a laser cutting machine to get you wooden spare parts.

You might consider painting one side of the 5mm/6mm parts using a spray-paint can or a brush, that will be the outer side. The other side (inner) can be painted in white for a better light reflection.

Step 2: Leg preparation and assembly

According to the diameter of your bolts, pre-pierce the battens by choosing the drill bit right smaller than the bolt diameter ; e.g. 7mm for a bot of 8mm. Then screw the 4 bolts into the 4 legs. You can use the nuts to force. Finally, assemble the 4 legs to the main part of the host box using washer and nuts.

Step 3: LED strip cutting, gluing and soldering

Use only strips with density of 30 LED/meter, you might want to use other densities but would need to cut the strip at every LED to respect the spacing of 33.3mm ending in a waste of time and effort.

Using scissors cut the strip every 500mm = 15 LEDs. Make sure you cut in the middle of a coppered connection.

You must end up with 10 strips of 15 LEDs, whose one has a male connector.

Using a pencil, trace the lines where you will glue the pieces of strips. They are 10 lines horizontally centred.

The first column must be traced 83.3mm from the edge, then each line is 33.3mm from the previous one. The distance between the first and the last (10th) line is 333.3mm.

Then pre-place the 10 pieces of strips according to next diagram. It is primordial that you alternate each piece of strip. For this you can rely on their arrows whose direction must change each column: → ← → ← and so on…

Glue the pieces of strips on your pencil lines once you are sure the Data line forms a coil.

Cut and strip 9x3 = 27 pieces of wires to reconnect the data and power lines between each piece of strip. Connect 5V (red) together, GND (black) together, and DATA (often green or yellow) together, as shown on the electrical diagram next step.

Also connect the power supply of both extremities (GND to GND and 5V to 5V) via 2 direct wires. It allows to better dispatch the power to avoid a difference of colour at extremities.

Step 4: Solder the circuit board

Arbalet's electronics, illustrated on the diagram, is composed by:

  • An Arduino board, connected to a computer through USB
  • A custom PCB, connected to a 5V power supply
  • An optional touch sensor MPR121 connected to 6 active surfaces

The custom board will be mounted right above the Arduino board, with its male PIN headers directly plugged in Arduino's female headers, ensuring its fastening as well as its data connection.

Solder the components and connections on the custom board as shown on the diagram. White wires on the diagram are not actual wires but direct male-female connections of PIN headers.

Then follow the Hardware and Software preliminaries until Arbalet firmware is uploaded before continuing. If something went wrong during soldering you will figure it out during these tests before it becomes less easy to fix the hardware problems.

Place your electronics on the side and jump to next step only after having successfully run at least the colour demonstrator on your new hardware using the -w flag to enable hardware. Ensure that all pixels are driven and able to light. If you meet troubles, find help in the troubleshooting section.

Step 5: Assemble the inner grid

The 3mm medium board has been cut into 11 vertical and 14 horizontal strips. The horizontal ones have side rods creating two side cavities that will host electronics and support the upper tray.

Notice that 9 vertical strips have wire passings. They are made for the data line you have soldered at step 6. Make sure you alternate them.

Assemble the whole grid made of vertical and horizontal strips by sliding strips into each other as shown on the drawing.

Then eventually rotate the final construction upside down so that side roads are at the top. Finally move the grids on the table tray so that each pixel the structures has created matches a LED.

Step 6: Close the table

Position and glue the 4 laser-cut sides of the tray. Cut pieces of cooking paper covering the pixels area that will help diffuse the light, as well as two side covers to hide the side cavities hosting electronics.

Finally, cut a piece of glass or plexiglass of 498x498mm, keeping a degree of freedom of 2mm on each side to ensure an easy placing and removing of the glass. The online plans are more suited for 4mm-thick glasses but other thickness will be fine as well.

Step 7: Add the touch keys (optional)

This step is not required but is an extension if you would like your table to be touch-sensitive. Although they are different and may return different types of output, touch feature can be provided by many kinds of sensors, including infra-red, barycentre of weight, vibration sensing, ... The method proposed here involves capacitive sensor connected to pieces of ITO plastic.


This plastic is covered with a thin conductive layer that makes it discrete underneath your glass as well as sensitive to capacitive changes. Only 1 side if generally conductive, identify which one thanks to an ohmmeter. Cut 6 pieces of ITO plastic slightly smaller than the size of two pixels i.e. 30x63mm and place them with the conductive side down as shown.

Top of the table:

Connect each conductive side of plastic to an input of the MPR121 located underneath the table tray. This connection uses no soldering, plastic pieces rest on the stripped wires ensuring an electric contact. Fold the stripped wires against the vertical strips to make them stable.

Bottom of the table:

This other extremity of the touch wires are connected to the MPR121. Solder its capacitive inputs 0 to 5 to wires going through Arbalet's pixels from the bottom of the table.


Make sure you understand how to run basic applications before enabling the touch interface. By default the online SDK has its touch feature disabled. You can activate it by adding the parameter­-c config150touch.json when executing an app. This parameter loads a config file enabling 6 touch keys. In most touch-compatible apps, available touch keys will backlight in light white when they can be touched, switching to strong white when they actually are. Make the change persistent by changing the default configuration into the file default.cfg and reinstalling the SDK.

Step 8: Run games and applications

Arbalet comes with a set of existing games (Tetris, Snake, Piano Tiles -on the picture-, ... and more to come) and ambiant lights, you can use them or create your own in Python or even using the visual programming language Snap.


Custom parts and enclosures

External host box (6mm version)
Better suited for MDF (medium) wood. Use the 5 or 6mm version for the host box depending on your material thickness.
External host box (5mm version)
Better suited for MDF (medium) wood. Use the 5 or 6mm version for the host box depending on your material thickness.
Internal grid (3mm)
Better suited for MDF (medium) wood. Wood strips for creating a grid delimiting pixels.


Circuit diagram
Diagram of the LEDs, Arduino board and custom board


Similar projects you might like

Interactive LED Table for 50€

Project showcase by Antoine Rochebois

  • 156 respects

Pac-Man LED Pixel Panel Costume

Project tutorial by Ben Muller

  • 259 respects

Plexiglass LED Table Lamp

Project tutorial by smellai and smellai

  • 1 comment
  • 5 respects

DIY Grow LED Light | Designing a Better Sun

Project tutorial by Dmitrii ALBOT

  • 103 respects

4x4x4 LED cube with Arduino Uno and 1sheeld

Project tutorial by Hassan Ibrahim

  • 73 respects

Discover how to create an IoT table light with Tuya Smart

Project showcase by Diego Moreira

  • 3 respects
Add projectSign up / Login