Summer 2022
Image of a Pong cabinet like the one I played that inspired the project
Over the summer I visited a retro arcade that had one of the original Pong arcade machines from 1972. I liked how simple the gameplay was and the aesthetic of the actual cabinet. I thought it would be interesting to re-create this cabinet in a small form factor as an homage to the original. I also felt like it would be a nice exercise to improve my Arduino skills, which is especially fitting since the original game designer also created it as part of a skill building exercise (Pong Game Wikipedia).
Some initial sketches. The design was changed later to fit a larger screen.
I started with parts that I had around, which included the Arduino which we had used in my first year engineering course. Programming Pong in C++ on the Arduino seemed like an interesting challenge, especially since I did not feel my C++ skills were up to it initially.
I started the design with some sketches on paper. I had initially planned on using a very small OLED screen since I already had it, but based on the initial sketches I chose to just buy a larger one. I felt that a monochromatic OLED was a good representation of the original graphics, which were white pixels on a blank CRT.
The button I added in order for the potential to add other games to the system, but I did not end up using it for the Pong game. I also added a small buzzer for sound effects, so I figured the button could be used to mute these if necessary.
Parts of the device before the case was finished
console with the bottom cover removed
Pong splash screen I created that displays when the device turns on
Game in play, score displayed on top and battery percentage in the corner (ball invisible due to effects of camera frame rate + screen refresh rate)
The code for the game was created on the Arduino and it takes position input from the potentiometer to display the user's paddle on the screen. The ball is randomly served to either side after a delay when the device is turned on, and it will bounce off of the top and bottom of the play area.
Since the handheld game is inherently one player, a sort of AI exists in the game for the user to play against. The AI's paddle attempts to follow the ball and heads towards the middle if the ball is moving away from it. The AI paddle has a speed limit that determines its responsiveness, so this had to be tuned by playing to find a value that made the game challenging but not impossible. Just like ordinary Pong, the position on the paddle affects the angle at which the ball is returned. If the user is able to hit the ball far enough out of the way of the opposing paddle the AI will not be able to reach it in time.
The project achieved what I set out for it to do, which was to be a smaller version of the old Pong game. The game is playable and challenging, but not impossible. Additionally, the body of the device was fun to design and pays tribute to the original arcade cabinet from 1972. The scope of this project was small relative to some others, but as a result it was finished with only a few days of work. I enjoy working on projects when I have the time, but sometimes it's nice to make something quick and finish rather than working on something over the course of a year or more.