This project revisits a minimalist Pong-style arcade game built with an Arduino Uno and an 8×8 LED matrix driven by the MAX7219.
Originally developed as an early learning exercise, the project was later refactored to improve structure, readability, and overall maintainability, along with a redesigned game-over animation.
The paddle is controlled via a potentiometer, while the ball movement is implemented using discrete position updates combined with deterministic collision detection logic. Over time, the game dynamically increases in difficulty by progressively reducing the frame delay.
Beyond being a compact arcade implementation, this project demonstrates several core embedded systems concepts:
- Analog-to-Digital Conversion (ADC)
- Real-time control logic
- Collision detection in constrained environments
- SPI-based communication with the MAX7219
- Dynamic difficulty scaling
The MAX7219 simplifies LED matrix control by handling multiplexing internally and communicating through a SPI-like interface.
MAX7219 Connections- VCC → 5V
- GND → GND
- DIN → D12
- CS → D11
- CLK → D10
- Left pin → GND
- Right pin → 5V
- Middle pin → A1
The firmware follows a structured embedded architecture:
- The potentiometer is read using the Arduino ADC.
- The paddle position is mapped to the LED matrix.
- The ball position is updated using direction vectors.
- Collision detection determines wall and paddle impacts.
- The frame is rendered on the LED matrix.
- Game speed increases over time to raise difficulty.
- A custom animation is triggered when the player loses.
- Modular firmware structure
- Progressive difficulty
- Refactored and improved code organization
- Clean game-over animation
- Lightweight and hardware-efficient implementation
- Score counter
- Non-blocking timing using
millis() - Sound feedback with a buzzer
- Two-player mode
- Impact-angle variation
Full source code available on GitHub.


_ztBMuBhMHo.jpg?auto=compress%2Cformat&w=48&h=48&fit=fill&bg=ffffff)







Comments