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.

Second Prize in the
Make it Glow Contest
2 People Made This Project!
- jordanat2012 made it!
- axelyates made it!
55 Comments
Question 11 months ago
hello absolutely love this project and im working on a similar project. How would you change the code from the group of six relative LED's to two relative LED's (only one on the right and one on the left)? I'm also having problems with which rows and columns go into the relative arduino pins. Many thanks!
1 year ago
Did you write the code for tic tac toe? I have a student who would like to make a 3 x 3 grid and create a tic tac toe game.
Reply 1 year ago
I have an updated version that has tic tac toe and a couple other new modes. I will upload it to the GitHub later today so you can view it. My version of tic tac toe prints the grid onto the 8 x 8 wall so each of the boxes is a 2 x 2 square. If you click anywhere in the square it turns all 4 tiles to your color and it will detect when someone wins and change the whole grid to that color. It sounds like you’re wanting to do something a little simpler but hopefully my example will be a good starting point. I should also mention that I downsized to an apartment and couldn’t bring the wall with me so I won’t be making the rest of the updates I had planned.
2 years ago
Can I use a power supply of 5V and 15 amps?
Reply 2 years ago
Yep!
Reply 2 years ago
Thank you! Almost done!!
2 years ago on Step 7
What does the samples do?
#define SAMPLES 8 // Must be a power
Reply 2 years ago
Thank you!
Reply 2 years ago
That’s for an unfinished music visualizer mode. It will eventually sample an on board microphone but I couldn’t get it working
2 years ago
What pins from the Arduino connect to the LED lights?
Reply 2 years ago
The LEDs connect to pin 8!
Reply 2 years ago
How should we test the LED lights....just one string? I loaded your code and only 4 LED's came on.
Reply 2 years ago
In the code there is a section that’s commented out for testing. If you comment out the main code and I comment the testing code it should light all the LEDs one at a time. For this you won’t need an external power supply and you can just use the 5v and gnd of the arduino. If you have the power supply hooked up I always like to test the the “colorPallete” example that comes with the FastLED library. To find this in the arduino IDE click file>examples>fastLED>colorPallete. You’ll have to change the LED pin and the number of LEDs but other than that it should work!
Reply 2 years ago
How do you connect a power supply other than the Arduino?
Reply 2 years ago
Most power supplies come with a matching female dc barrel jack. Strip two wires and screw them into the holes on the back of the female jack. Then solder the positive to 5v and negative to ground of the strips. Make sure the ground of the strips is connected to the ground of the arduino. If your power supply didn’t come with a female dc barrel jack then you should search on amazon for one. They’re usually the same universal size
2 years ago
Hey. I'm having difficulty with the matrix switches. Would you be able to attach some more pictures so I can understand it better?
Best Answer 2 years ago
I don't have any better pictures but I can try to explain it a little more clearly.
Start by cutting 16 lengths of wire, 8 for the rows and 8 for the columns. I used different colors for clarity but it doesn't really matter. Strip each wire so that there are solder points at each end and evenly spaced to allow 8 buttons to be attached to each wire.
Solder a button at each point of the matrix, connecting each button to one row wire and one column wire. Each button has four legs that short when the button is pushed, but the legs across from each other are always shorted so you'll need to be careful. In general I always use legs diagonal from each other to make sure I'm not accidentally creating a closed loop.
To test your circuit before gluing everything down, use the continuity test feature of a multi-meter. If you connect to a row and column and hear the beep when no button is pushed it means your connection is shorted and you'll either need to switch the button at that row and column or you soldered it wrong.
Now that you've tested everything you can solder jumper wires to each row and column to connect them to the arduino. You'll need 16 jumper wires in total, I used 8 male to male jumpers and cut the in half, then soldered on different length extension wires so they would all meet in the bottom left corner where my board is.
The button matrix was the hardest part of the whole project and it took me almost 5 hours to do all the work but the result was worth it. Hopefully this helps and you can always feel free to ask more questions. Good luck!
Reply 2 years ago
So are only 2 legs of the button connected to the wires? ALso when you strip the wires, are you also cutting them or just removing the covering of the wire? Thank you so mcuha nd I look forward to making this project as it seems fun.
Reply 2 years ago
Yes only two legs get connected. When I strip the wire I’m just removing some of the cover to expose the wire underneath, not cutting it in half. You could cut the wire into small sections but it would take a lot longer to come t everything. I found it way easier to just leave it as one long wire and strip little sections out.
2 years ago
I super love your idea. I found your video on youtube while i was looking for some inspiration for my gaming room. I’m having a hard time to understand the button matrix. I don’t have a deep knowledge about this stuff but it would be awesome if someone will explain to me the button matrix. Thank you