Introduction: Interactive LED Tile Wall (Easier Than It Looks)
In this project I built an interactive LED wall display using an Arduino and 3D printed parts.
The inspiration for this project came partially from Nanoleaf tiles. I wanted to come up with my own version that was not only more affordable, but also more interactive. I had also just finished a class project using an LED matrix and wanted to try something on a larger scale.
This project took a couple weeks because of the long 3D print times but I kept the cost low and there’s very little labor making it a great project to try and build yourself!
You can find all of the STLs I used on thingiverse: https://www.thingiverse.com/thing:4080834
Supplies
For a full cost breakdown check out my website:
https://chrisparker.tech/project/interactive-led-wall/
Use the affiliate links to support my content!
Arduino Mega - https://amzn.to/33LDGz0
WS2812b Addresable LEDs - https://amzn.to/37U95CN
Tact Switches - https://amzn.to/2LyLAFy
5V 10A power supply - https://amzn.to/2LyLAFy
18 gauge wire - https://amzn.to/2LyLAFy
Wire stripper - https://amzn.to/2LyLAFy
Soldering iron - https://amzn.to/2LyLAFy
Heat shrink - https://amzn.to/2LyLAFy
Best affordable 3D Printer (in my opinion) - https://amzn.to/2LyLAFy
PLA filament - https://amzn.to/2LyLAFy
Step 1: Start Printing the Tiles
The longest part of this project is 3D printing the 64 tiles needed to make an 8 x 8 grid. When I did this, I was printing three tiles at a time and each print would take about 5.5 hours. For the entire wall the total print time was about 120 hours or 5 days if you print them non stop. Luckily for us, the entire rest of the project can be done while the tiles finish printing.
The tiles themselves are 3.6 inch squares that are one inch deep. I used a wall thickness of 0.05” and found that it diffused the light perfectly. I also included notches to allow the LED strips and button wires to pass through but the ended up being unnecessary because of the spacers I used to mount the tiles (we’ll get to that).
Here’s a link to the STLs I made but I would recommend making your own to fit your project better.
Step 2: Wire the LED Strips
Since I’m going to be programming with Arduino, I decided the WS2812b LED strips would be perfect for this project. These strips are individually addressable, meaning you can program each individual LED on the strip to be a different color and brightness. They also pass data from one pixel to the next so everything can be controlled from one data pin of the Arduino. The strips I used have a pixel density of 30 LEDs per meter
My design fit 6 LEDs under each tile, three LEDs in two rows, so I cut the strips into 16 segments each with 24 LEDs. These strips were stuck down to the sheet of wood using the strip’s adhesive backing. Make sure you clean any dust off the wood before doing this or else your strips will peel off over time.
Be mindful of the directional arrows on the strips, I started from the bottom left of the board and alternated their direction as I stuck them down. Solder the output end of each strip to the input of the next.
Step 3: Cut the Board Down to Size (Optional)
The board I bought was a 4' square but my final board was going to be closer to a 3' square so I got out my jigsaw and cut it down to size. If you made bigger tiles, or just added more 3.6" tiles, you could easily fill the entire 4' x 4' board and save yourself some cutting.
Step 4: Make the Button Matrix
This was the longest part of this build (other than the print time). In order to take advantage of the keypad library included in the Arduino IDE, all 64 buttons need to be connected in rows and columns. The diagram above shows a 4 x 4 example but it can easily be increased to an 8 x 8 grid like I made, or any other size that would fit your space.
I cut 16 lengths of wire and stripped them every 3.6 inches so the buttons would sit in the middle of each square. I then soldered one leg of each tact switch to a space on the row wires. The column wires were soldered to the leg diagonal from the row wire. When the tact switch is pressed, it will short the row and column wires together.
Each row and column then needs a wire to connect it to a digital pin on the Arduino. I color coded all of my wires to make it easier to troubleshoot, and I ended up having to change the pins I was using a couple times so it was a helpful decision.
After this, I hot glued all of the buttons into place on the MDF. be sure to measure where you need to glue each button, otherwise the plungers will miss.
Step 5: Test Your Circuit
Now that all the LEDs and buttons are glued down it's the perfect time to test everything. In the code linked above, I have a few functions to test all of your LEDs and buttons. If there are any problems (which there probably will be on a project this big) you can find them and fix them. For more information on how to use these test functions check out the code walk through linked below.
Try and do all your troubleshooting before adding the tiles. It'll be much harder to get to everything once the tiles are down.
Step 6: Glue Down the Tiles
To connect the tiles to the board I designed a 3D printed bracket the will hold four tiles together at each corner. When I did this I went one tile at a time and glued each bracket into place based on the tiles it was connecting so I wouldn't have any weird spaces.
I also printed 64 spacers to glue on to the plungers of each tile. This compensates for the added height that comes with the brackets, but also increases the space the plungers can click, making up for small errors in the button spacing.
STLs for these brackets and spacers can be found on the Thingiverse page with the tiles.
Step 7: Programming
https://github.com/mrme88/Interactive-LED-Wall/blob/master/LED_Wall_main.ino
This was my favorite part of this project. Now that the hardware is done we can program it to do anything! As of right now I have programmed a rainbow pattern mode and a click to paint mode. Both of these can be seen in my build video and I go into detail on how I wrote them in the code walk through.
If you guys build this I really encourage you to try and program your own modes! It really makes the project worth the time and money. If you need some inspiration for modes to program then keep an eye on my YouTube channel for future updates.
Some future features I have planned are:
– An audio visualizer using a mic and the FFT Arduino library
– Checkers
– Tic tac toe
– Battleship
– Reversi
– Memory
– And plenty more games that can be played on a grid.