Interactive LED Tile Wall (Easier Than It Looks)

41,552

396

55

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.

Make it Glow Contest

Second Prize in the
Make it Glow Contest

2 People Made This Project!

Recommendations

  • Reuse Challenge

    Reuse Challenge
  • Metal Contest

    Metal Contest
  • Make it Move Challenge

    Make it Move Challenge

55 Comments

0
soccerkern19
soccerkern19

Question 7 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!

0
DottieB2
DottieB2

10 months 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.

0
ChrisParkerTech
ChrisParkerTech

Reply 10 months 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.

0
DottieB2
DottieB2

1 year ago

Can I use a power supply of 5V and 15 amps?

0
DottieB2
DottieB2

Reply 1 year ago

Thank you! Almost done!!

0
efcmaui
efcmaui

2 years ago on Step 7

What does the samples do?
#define SAMPLES 8 // Must be a power

0
DottieB2
DottieB2

Reply 2 years ago

Thank you!

1
ChrisParkerTech
ChrisParkerTech

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

0
DottieB2
DottieB2

2 years ago

What pins from the Arduino connect to the LED lights?

0
ChrisParkerTech
ChrisParkerTech

Reply 2 years ago

The LEDs connect to pin 8!

0
DottieB2
DottieB2

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.

0
ChrisParkerTech
ChrisParkerTech

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!

0
DottieB2
DottieB2

Reply 2 years ago

How do you connect a power supply other than the Arduino?

0
ChrisParkerTech
ChrisParkerTech

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

1
asonika29
asonika29

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?

0
ChrisParkerTech
ChrisParkerTech

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!

0
asonika29
asonika29

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.

0
ChrisParkerTech
ChrisParkerTech

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.

1
andeng78
andeng78

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