This is the story behind "Birdie Crash". It's a "Flying Tickets / Flappy Tickets" clone I’ve written in Android, but I could never finish this project without making use of an Arduino (I know: the game most probably violates several copyrights, trademarks and patents, but I made this game for my personal enjoyment only).
Since my kids were pretty impressed by the original game in our local arcades, I decided to make my own "table top" version. Not as big as the real stuff - something a bit more portable and only for one player - but still reflecting the original gameplay.
The entire setup is based around a Salora 22LED1500 TV (the cheapest 22" HD TV I could find), a cheap Android 4.4 stick (an MK808B Plus), a big yellow arcade button... and an Arduino Leonardo.
The Leonardo gets its power from a USB port on the HDMI Android stick and acts as a keyboard interface to the Android HDMI stick. The Arduino sends out a keystroke as soon as someone presses the button to make the bird jump. I’ve seen people struggle with the serial interface to do this, but this is a much simpler solution. The LED strip animations on both sides of the screen and the blinking led inside the button are managed by the Arduino as well.
Technical Implementation: Physics Logic and Sprite Buffers
The project reveals the hidden layers of simple sensing-to-flap interaction:
- Identification layer: The 0.96 inch OLED Display acts as a high-resolution visual eye, measuring every point of the character's X-Y coordinates for collision checks against the pipes.
- Conversion layer: The system uses the high-speed I2C protocol to receive high-speed data chunks for mission-critical sensing tasks.
- Visual Interface layer: A 128x64 Pixel Screen provides a high-definition visual data dashboard for your gaming status check (e.g., Current Score, High Score).
- Control Interface layer: A Tactile Button provides a manual flap-trigger or status check during initial calibration.
- Processing Logic: The Arduino code follows a "game-loop" (or physics-dispatch) strategy: it interprets button hits and matches gravity and velocity to provide safe and rhythmic gaming motion.
- Communication Dialogue Loop: Game bits are sent rhythmically to the Serial Monitor during initial calibration for status coordination.
Hardware-Software Infrastructure
- Arduino Uno: The "brain" of the project, managing multi-directional button sampling and coordinating OLED and buzzer sync.
- OLED I2C Display: Providing a clear and reliable "Visual Link" for every point of the game.
- Tactile Switch: Providing a high-capacity and reliable physical interface for your first successful "Flap Mission."
- Breadboard: A convenient way to prototype your first arcade-electronics circuit and connect all components without soldering.
- Passive Buzzer: Essential for providing clear and energy-efficient sound for key points in your game level.
- Micro-USB Cable: Used to program your Arduino and provides the primary interface for the system controller.
Game Automation and Interaction Step-by-Step
The arcade gaming process is designed to be very user-friendly:
- Initialize Workspace: Correctly set up your OLED and button on your breadboard and connect them properly to the Arduino pins.
- Setup High-Speed Sync: In the Arduino sketch, initialize the
display.begin()and define the sprite bitmaps in thesetup()function. - Internal Dialogue Loop: The station constantly performs high-performance temporal checks and updates the birdie status in real-time based on your button hits.
- Visual and Data Feedback Integration: Watch your gaming dashboard automatically become a rhythmic status signal, pulsing and following your location settings.
Future Expansion
- OLED Identity Dashboard Integration: Add a small OLED display on the back to show a "Satellite Leaderboard" or "Battery (%)".
- Multi-sensor Climate Sync Synchronization: Connect a specialized "Bluetooth Module" to perform higher-precision "Global High-Score Sync" wirelessly via the cloud.
- Cloud Interface Registration Support Synchronization: Add a specialized web-dashboard on a smartphone over WiFi/BT to precisely track and log total arcade history.
- Advanced Velocity Profile Customization Support: Add specialized "Deep Learning (vCore)" to the code to allow triggers to be changed automatically based on the user height!
Birdie Crash is a perfect project for any science enthusiast looking for a more interactive and engaging gaming tool!
A demo of the setup can be seen on YouTube:
[!IMPORTANT] The OLED Display requires an accurate I2C Address (usually 0x3C or 0x3D) in the code to function correctly; always ensure you have an appropriate Fail-Safe flag in the loop if the serial bus overloads!