Interactive Ping Pong Pixel Board

by amazeum in Circuits > LEDs

7014 Views, 134 Favorites, 0 Comments

Interactive Ping Pong Pixel Board

PXL_20201028_172757037.jpg

This is a Simple interactive display using WS2812B RGB 5050 LED (also known as Neopixels) and ping pong balls. The Ping Pong Balls are used as a diffuser to make the display bigger and a little retro.

Please read the whole ible before starting. It will help make the whole project run smoother I hope.

For laser cutting - Laser cut files are in PDF. Black lines are cuts. Red lines are marks. I set the marks at low power high speed to just draw the outline for placement.

Supplies

Electronics

Arduino Uno
Momentary Capacitive Touch Sensor - Adafruit (OR basic push button of your choice)
Neopixel LED strip 30 LED per M strip (Must be 30 led per meter) Look for WS2812b LEDs if you don't use Neopixel brand
300 Ohm resistor


Hardware
Poster board - at least 2 sheets, I used white because it isn’t noticeable when the white ping pong balls are lit up. 22 gauge Wire - 3 different colors
5 mil wood (122cm by 122cm sheet is enough)
19mm (3/4in) plywood
128 ping pong balls (you can buy bulk here) (There are 2 sizes of ping pong balls. I chose 40mm and all dimensions are based on that for this ible)
Double sided foam sticky tape Plexiglass - at least 610mm by 1220mm (2ft by 4ft)
Wood screws, wood glue and nuts and bolts to make the box.

Tools
Soldering iron
Razer blade or any cutting tool for poster board (if you don't have a laser)
Yardstick or long T square
Laser cutter - but can be done with basic wood cutting tools and scissors.

Cutting the Base

IMG_20190918_151748.jpg

Start by cutting the 5 mil wood to the correct dimensions 610mm by 305mm with the laser cutter or with a saw.

If you can't cut this with a laser cutter you can draw a line 10mm in from the long edges to use as a guide for the ends of the LED strips. If you do not add the notches be sure to apply the LED strips inward from the edge by 10mm to better help where the LEDs will align. There are 16 rows by 8 columns of ping pong balls that make up the grid. This could be done in any shape but I chose a 16 by 8 rectangle.

Side note - You can decide to make a different shape as long as you wire the LED strips correctly it will work. Try mixing it up and see what you can come up with. This will mean that some of the instructions below will be different such as how long to make the strips and length and width of your board.

In the pic you can see the circles on the board. If you use the laser cut file they will be there. Make sure they are outlines and not cuts. I used a very low power and high speed to mark the lines. These circles are for the ping pong placement and do not line up with the LEDs. This is because if you try to center the first or last led with the circle the last LED will be too far off. So I started 10mm in from the side so that the drift would mostly line up with each ping pong ball.

Laying the LED Strips

wire directions.png
matrix back wire directions.png
IMG_20190918_151748.jpg
IMG_20190918_154609.jpg
IMG_20190918_154614.jpg

Cut the LED strips to 4 LED sections. Be sure to cut them on the proper spot. This is marked on the strip. You will need 32 strips cut. Cutting the LEDs in sections of 4 will help with the drift mentioned earlier. The center will have a gap when you place the strip 10mm from each side. This will need to be connected. If the LEDs were cut in sections of 8 they will not align well enough on one of the sides to make a good glowing ping pong ball.

Peel the strips off the back of the LEDs so you can stick them down one by one. See the picture on placement. Red in on right out on left, Green in on left out on right and so on. You will want to place them closer to the outside edge. (see pic) They will not line up with the center of each ping pong ball but that’s OK because it will still be bright enough to diffuse through the ping pong ball.

Each strip will need to be soldered together with wire. There are 3 connections on each end.

GND = Ground DO/Din = Digital out and Digital in. This determines the direction. You will always add a wire coming from the out to the in. +5v = is 5 volts in

Since some brands of these LED strips have connections in a different order follow the strip you have. The principle is the same though.

I highly suggest you color code the wires. I used red = 5v, DO/Din = blue, Ground = black. This will help a lot since you have to do this almost a 100 times.

Add the Capacitor - negative to the negative input of the LED strip and the positive to the positive input of the strip. This helps with power surges to protect the LEDs.

Soldering tip - to the LED strip is a little tricky. Make sure you don’t let the solder tip sit on the strip too long as it may melt the pad off the strip disconnecting the pad from the strip and not working anymore.

As you can see in the picture the bottom row is connected to the corresponding rows on the row above it. Next the connections in the middle are connected in the same order and then at the end of the row you will go up one level with more connections. Follow the connections on your LED strip and use the same color for each connection ie.. 5v to 5v, GND to GND and DO to Din.

Making the Box Frame

Now that you have all the strips applied to the board it’s time to make a frame. This is a basic wood box. With the backboard laying flat the frame will be 50mm high. Cut the plywood in 50mm strips. We will need 2 boards that are 610mm and 2 that are 311mm this should give you a nice box as a frame. The box can be made deeper to allow room for the arduino if this were hung on the wall.

I chose to glue and nail the corners together. The 2 shorter boards will be at the short ends and the 2 longer sides should fit nicely inside those ends. Be sure to fit it all together before you fasten it all together. You may need to sand down the edges to make them fit snug. Add the backboard you created with the LEDs on it. I added triangles to each corner to hold the back on.

Ping Pong Balls!

IMG_20190923_105300.jpg
IMG_20190924_123248.jpg
IMG_20190923_105302.jpg
IMG_20190924_123235.jpg
IMG_20190924_123252.jpg
IMG_20190924_123305.jpg

Time to add the ping pong balls. To make the balls light up better, and prevent light bleeding to adjacent balls, we will add card stock between them. A laser cutter really helps with the next few steps but you can get some really nice results if you make the parts with scissors too. Use the Ball Grid Holder file to cut the strips.
(Files attached for laser cutting called ball_grid_holder)

No Laser Cutter? - To make them by hand a grid of card stock can be made by cutting slots in long strips. The strips are as follows
610mm by 35mm - You will need 7 of these
305mm by 35mm - You will need 15 of these

Each strip needs a slice a little more then half way up or 18mm on the small width of the strip this is done every 40mm

The grid will take a little finesse but should go together.

If you have a laser you can cut the top and bottom to hold the balls in place. (No laser? - This can also be done with a sheet of plexiglass cut with a saw) I suggest the top board with holes to be painted black. It helps make the colors pop.

Now add the ping pong bottom. This is a simple grid that will space the balls for you (if you don't have a laser cutter you can skip this step)

Add the ping pong balls to the grid. Than place the top grid over the balls to hold in place. For added structure I drilled 6 holes from the top grid through the bottom grid and added a nut and bolt to sandwich the top and bottom together and make sure the balls don't roll around.

Now it looks really satisfying to look at.

The capacitive touch is a bonus for this project and works really well but if you want to use a simple momentary switch just connect one wire of the button to Pin 2 and the other to a ground on the Uno. It still works great either way.

Test the whole thing, Plug in the USB cable to the computer or a USB power plug and watch it come alive. If it doesn’t seem to come to life unplug and check all your connections. The solder on the LED pads sometimes comes loose and needs to be fixed. If a pad does come loose sometimes it will allow first strips to light up but not later strips so double check those.

Electronics and Code

Ping Pong Pixel Diagram.png
PXL_20201027_212322729.jpg

Adding the sketch to the Arduino.

Using the attached code open the Arduino IDE and upload the code. (If you have never done this before or need some pointers see THIS LINK that shows how to upload to the Arduino.

Remember that you will need to add a USB cord to power this. Determine where you are going to place the Uno in the finished frame on the back of the LAD board. Use any length wire you feel will work for the placement of the Uno. I placed mine in the middle of the back at the bottom so the button wires were closest. Don't permanently connect the touch plate to the capacitive touch board yet. The wire will need to be run through the frame. Just connect the LED strips and the 3 wires to the touch board for now.

LED Din = Pin 6 (Place the 300 Ohm resistor between the Arduino data output pin and the input to the first NeoPixel)
GN = any GND on the Uno
5v = 5v out on Uno

Capacitive touch
Out = Pin 2 on Uno
GND = Ground on Uno
LED = not used (unless you want to)

That’s it for the wires to the Uno.

Test the whole thing. It should load and start playing a pattern. Make sure you can see all the LEDs light up. If not you may have a bad solder joint. Remember to be careful soldering them on the LED strip. If one does come off you may be able to scratch a little of the top layer off above the connection and solder back on to it.

If it all works then you are ready to move on to the next step.

The capacitive touch has an option to add a wire and extend the touch to something that is conductive. A metal plate was made with a screw in the back that the wire was soldered to. This made it easier to be cleaned and less likely it would break down over time with a mechanical button. The capacitive touch also works pretty well with wood or plastic over it up to a few millimeters thick so you could place it behind the frame and mark the touch point so you know where to touch. Make a hole for the touch plate on the bottom of the frame and mount the plate. Now attach the wire to the back of the touch plate or button.

The code was created for another project but the awesome Maker also on Instructables, AGBarber.
I changed it a little to make a pause between the button presses so that it didn't freak out the Arduino and give it a better interaction. He also has a potentiometer in the code that can change the brightness but i did not add this to my display. I left it so if you want to add one go for it. It connects to Pin A5 on the Uno.

Final Assembly

PXL_20201028_172814817.jpg
PXL_20201028_171028672.jpg
PXL_20201028_172752302.jpg
PXL_20201028_172759996.jpg
PXL_20201028_181116714.jpg

With the wires connected mount the Arduino Uno to the back of the board with double sided sticky foam tape.
Run the wire through the frame to the touch plate. I was able to wrap the wire around the screw from the touch plate and 2 nuts to hold it on. It sensed the touch each time so no solder needed.

Add a plexiglass front for the frame by measuring the outside edges of your frame. Pre drill all holes very slowly so as to not crack the plexiglass. Mount the front of the plexi to the top of the box. Use a USB cord and wall plug to power it up and watch the cool patterns bounce around.

Post your make of this and have fun with the design. We would love to see what you can incorporate this into.

Here It Is in Action!

Ping Pong Pixel Art