Interactive LED Tile Wall (Easier Than It Looks)

36,265

369

53

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

1 Person Made This Project!

Recommendations

  • Make it Glow Contest

    Make it Glow Contest
  • First Time Author Contest

    First Time Author Contest
  • PCB Challenge

    PCB Challenge

53 Discussions

0
DottieB2
DottieB2

6 weeks ago

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

0
DottieB2
DottieB2

Reply 6 weeks ago

Thank you! Almost done!!

0
efcmaui
efcmaui

4 months ago on Step 7

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

0
DottieB2
DottieB2

Reply 4 months ago

Thank you!

1
ChrisParkerTech
ChrisParkerTech

Reply 4 months 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

5 months ago

What pins from the Arduino connect to the LED lights?

0
ChrisParkerTech
ChrisParkerTech

Reply 5 months ago

The LEDs connect to pin 8!

0
DottieB2
DottieB2

Reply 5 months 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 5 months 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 4 months ago

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

0
ChrisParkerTech
ChrisParkerTech

Reply 4 months 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

5 months 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 5 months 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 5 months 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 5 months 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

5 months 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

0
ChrisParkerTech
ChrisParkerTech

Reply 5 months ago

The button matrix is definitely the hardest part of this project (not necessarily difficult, just time consuming). Basically I made an 8x8 grid of tact switches. Each switch has four little legs and when the button is pushed, all four legs are shorted. The grid is made with 8 vertical and 8 horizontal strips of wire, one for each row and column. Each button is soldered to its corisponding row wire on one leg, and column wire on the leg diagonal from the other. When the button is pushed, it will short the two wires together. Each row wire and column wire is then connected to an io port on the arduino. The code can detect which button is pushed by checking which io pins are shorted together. Let me know if you need any more help, good luck!

0
andeng78
andeng78

Question 5 months ago on Step 4

Noob here :( im having a hard time understanding the button matrix :( please help me thanks

0
colognemike
colognemike

7 months ago

Hello, I would like to make the LED wall with 20m strips without a micro switch (1x1 meter). These should be controlled with different modes, via a wemos D1 mini, or a NodeMCU V3 with a web interface via WiFi. Is that possible?
Could you please send me a sketch? Thank you very much