For this assignment, I designed and implemented my own version of Pong. There are two players–each has a button at their end of the “table”. They have to push the button just as the ball (lit-up LED) reaches their end of the table. If they press their button as the ball reaches their side, the ball speeds up and reverses direction. If they press too late, the ball keeps rolling and they get a strike. Once a player receives 5 strikes, their opponent wins. Garrett and I call this game, Freakout!
I began this assignment by picking a project idea with my lab partner, Garrett. The project idea had to be implemented by using an Arduino microcontroller. We chose to put our own twist on the classic game of Pong. Instead of the motion of the “ball” moving in a line, it instead moves in a circular path.
We began by first gathering our materials. For this project, we needed eleven LEDs, two buttons, many wires attached to headpins, a breadboard, foam board, and the brain of the circuit–our Arduino microcontroller. The microcontroller uses the instructions we program for it on the Arduino development platform.
We soldered the wires to the LEDs. Then, we cut foam in to a circle and cut smaller circles to insert all of our LEDs along with the wires for the buttons.
Here is a look at the framework for Freakout. The blue LED has no functional purpose. It is there only for aesthetic appeasement. The brown marker is there so that we could mark each of the ground wires.
The next step was to connect all of the headpins in to the breadboard. After that, connect ground wires to the ground side of the breadboard.
Our project is moving along nicely. The web of wires hanging below makes me think of a Jellyfish.
Here is our project with all of the power and ground wires now connected to both the breadboard and the Arduino, creating a circuit. There is only one thing missing–a power source!
This video shows us testing the path the lights followed. We were happy that they went in a clockwise direction, just as we programmed on the Arduino platform.
All of the time consuming work (after the wires were connected) was spent programming. We had to ensure our game met a few different conditions: each player has 5 strikes before they are out, the game speeds up each time a player successfully bounces the ball to his opponent, and the ball reverses path each time it is hit successfully.
Here is a video of our nearly-finished project. Our game is very fun to play in the dark!
If you notice in the end of the video, the red LED of the player who lost lights up. We decided to change that by lighting up all the lights on the side of the player who wins when the game is over.
The LEDs on the winner’s side are lit.
We then decided to create some housing for our project to make it look cleaner–like a finished product.
We stuck with our red and white theme.
Here you can see a small port that allows for us to connect our Arduino to the computer (power source) via a USB connector.
Our completed project, Freakout!
This was a big project to do in the time span of only a few days. We ran in to several challenges along the way.
One problem we ran in to was that we soldered all of our wires to LEDs without remembering which side was ground. We remedied this problem by testing each connection. We connected the LED to the Arduino and determined which side was ground by making note if the LED lit up or not. If it did, we marked on the ground wire with a brown marker. If not, we flipped the headpin to ensure it lit up and then we marked the ground wire with a brown marker. Of course, we realized that if the LED did not light up then we knew the correct wire was not connected to ground (this means we could mark the ground wire without needing to flip).
Another problem that we ran in to was that after we had completed the housing, a solder connection came loose (resulting in the LED not lighting up). We had to pop off one of our joints (of the box) to get in to the wire. Then we had to solder the wire back on to the LED. We learned from this mistake and decided to leave one side of the box unglued on the bottom, leaving a door for easy access. Freakout remains aesthetically pleasing.
Overall, this project was a huge success. Garrett and I created an exciting new game called Freakout based on the classic game of Pong. We implemented every skill we learned from the previous three weeks of assignments and labs to create Freakout. We utilized our skill of soldering, creating foam boxes, creating a large circuit, and programming the Arduino for input and output. I am anxiously awaiting what I get to do next in this Physical Computer class.