Introduction: LED Arduino Beer Pong Table
Our project is an LED light up entertainment table, or colloquially, a Beer Pong table. We got the idea from a group of students last year who also built a beer pong table for their final project, and we learned about their design and made some significant changes that we thought would make the project better.
The use of the beer pong table is for beer pong. There are ten LED rings on each side for the ten cups, and then there is an 8*30 matrix of LED's in the center of the table that we can program to make any design we want. We added a microphone, so that we could make the table bass reactive. We also added a rotary switch and 3 buttons so that we could change between designs, change the score for both sides, and turn the LED rings on and off. The rotary switch changes between pre-programmed designs for the center matrix of LED's, two of the buttons change the score for each side which is then displayed in the matrix of LED's, and one button turns the LED rings on and off.
The finished product reacting to bass can be viewed in the attached movie. The effect is best if your music is loud enough to clearly hear the bass in the song. The image is the table without the center strips on.
List of Materials:
- 1 table
- Piece of wood large enough to cover the entire table.
- 160 5mm LED's
- 160 5mm LED holders
- 160 resistors, 100/150 ohms and then 4 different valued resistors for the rotary switch. 10 kohms for grounding
- Rotary switch, 3 button switches
- Darlington Transistor
- Power strip and 10 Amp 5 Volt power supply
- 1 Arduino Uno
- 1 breadboard
- A lot of wire
- Black spray paint
- 2 Hinges
- 1 Adafruit Microphone
- 8 Adafruit Neopixel strips, each 1 meter long
- Enough Acrylic to cover the entire table and sides
- Nails, screws, epoxy, hot glue, super glue
- 20 clear solo cups (red solo cups work, but the clear ones look much better)
Step 1: Constructing the Table
This step will walk through the construction design. The Neopixel strips and electronics are described in the next step.
First, we cut the wood to be 1/2 inch longer and wider than the table. Then, we carefully measured and marked where the holes needed to be drilled to match up with the ten cup design for beer pong. Then, we drilled the holes, and put in the LED casings in the holes with hot glue as shown in the first two images. The LED's then will stick into the casings firmly. Before putting the LED's in, we spray painted the sides of the table and the entire plank of wood black. The holes LED casings can be seen in images 1,2.
After this, we put 2 inches of wood on top of the table for the plank of wood which holds the LED's to rest on top of, leaving room for the wiring. This can be seen in the background of picture 3. Once all of the LED's were in the holes and the wiring was done (described in next step) we attached the plank of wood to the top of the table. Then we placed the Neopixel strips in the center of the table with epoxy, since hot glue did not stick to the strips. Then, we added the acrylic. We cut the acrylic to cover the entire table, and to also form a ring around the table edges. We used screws and nails to attach the plank of wood to the table and the acrylic to the plank of wood. The acrylic rests on small pieces of wood attached to the top of the plan of wood.The acrylic covering and side panels can be seen in images 4,5,6. The Neopixel strips can also be seen in these images, although they will be described more later.
After the acrylic was added, we added the buttons and rotary switch to the side panel which has the hinges. This was done with super glue, as hot glue didn't stick, and using epoxy proved difficult. The finished button layout is shown in image 7. Then we put the cord of the power supply through a hole in the acrylic and connected it to our power strip. The microphone was put through a hole in the bottom of the table, as seen in image 8. The power supply (and a pair of incredibly attractive feet) can be seen in image 9. Sealant was put between the acrylic sheets to make the table almost water proof.
Because we had to be able to access the Arduino and breadboard, we made one of the side panels have hinges, so that we could lift it up and change the wiring if need be. In hindsight, we should have put the breadboard and Arduino underneath the table, that way it would be more protected from water and we would not have needed the hinges. But hindsight is 20/20, unlike my own eyes.
Step 2: Electronics - Circuits and the Neopixel Strips
The first step for the electronics was making the 20 LED rings. The circuit diagram is shown in image 1. The LED's are 20 mA LED's, and the power supply is 5 volts. The different LED rings dropped different voltages across them, so each color LED needed a different resistor value to get the same current going through each ring. The finished rings can be seen in images 2,3.
After this, we connected the positives of the ten LED circuits together on a breadboard, which was then connected to the power strip. We did this for both sides. The grounds of the ten rings were then connected together and then connected to one side of a Darlington transistor. The corresponding side of the Darlington resistor was then connect to the 5 volts out pin on the Arduino, so that the LED rings would only turn on when 5 volts is supplied. A button was wired to the Arduino to control this, so that the LED rings could be turned on and off. The ground of the Darlington was connected to the ground of the power supply. The circuit diagram is image 4.
The rotary switch was wired using voltage dividers powered by the Arduino, and the voltage out was read in by the Arduino. Depending on the setting of the rotary switch, the voltage read would be different, and the Arduino would then switch between programs for the Neopixels. Two additional buttons were wired into the Arduino, and when they were pressed the Arduino would iterate the score. The circuit diagram is image 5. Image 6 is the power strip and breadboard. Image 7 is the LED's rings in the table and wired to the power strip and bread board. Image 8 is the Arduino wiring.
To keep score, the score was displayed as text on the the Neopixel strips. For the wiring, when the button was pressed, the score for that side would increment by 1 up to ten, and once a team hit 10 points (all ten cups hit) a winning message would display, as seen in images 9 and 10. The score display is shown in image 11.
The Neopixel strips were actually a lot easier than the LED rings to construct. The 8 strips were all connected in one long line. Then, the first strip was connected to the power supply and ground. Then, the Neopixel strips were connected to the Arduino by a single Digital Out Pin, which could then be used to control each LED individually in the strips. This configuration can be seen in image. The LED rings and Neopixels are demonstrated in images 9,10,11,12 (Image 12 is before all of the LED rings were in the casings.)
For the sound reactivity, a microphone was wired into the Arduino analog in port. It is powered by 5 volts out form the Arduino. The microphone is image 13. The coding is described in the next step.
Step 3: Coding
The first part for the coding is downloading three libraries for the Arduino. To do this go to:
The code we wrote with comments is attached. For some reason, we could not have sound reactivity as one of the settings for the rotary switch. This forced us to have two different programs. One is only the bass reactivity, and the other program includes the score keeping, the rainbow effect, and a maze design. (We could change the program to make any designs we want.) We actually spent a while trying to only use one program, but we could not figure out the problem. However, this does not detract from the enjoyment of the table, and so we decided it was fine.
For the bass reactivity the Arduino reads the frequency of the sound heard by the microphone. When the microphone hears a low enough frequency (for us 450 hz was a good limit) the Arduino randomly chooses either a row or the entire matrix of LED's to flash a random color. It is then delayed by a tiny bit before it can flash again. Doing this lead to a very impressive bass reactive table.
The sound reactivity program is called SoundReact, and the other one is LedTest. The two sample filters have to be included with the main files for each program.