Arcade Gaming Console
Author: Dămoc Mara - Andreea
GitHub Project Link: link_to_github
Description
This arcade game is built on STM32 using bare-metal Rust. It polls four buttons for real-time movement on a TFT LCD. The system tracks gameplay logic, including collision detection and scoring. Feedback is provided via three LEDs for lives and a PWM buzzer for sound effects. The project demonstrates full hardware-software integration—combining digital inputs, visual rendering, and sensory feedback in a memory-safe environment.
Motivation
The motivation behind this project stems from a nostalgic passion for classic arcade games. By building a mini-console from scratch, I wanted to take a fun and engaging approach to learning embedded systems. This project merges my interest in gaming with technical skill-building, providing a hands-on way to understand how hardware and software interact to create a real-time interactive experience.
Architecture
The STM32 microcontroller serves as the central control unit, directing and managing all hardware components and executing the game logic developed in Rust. The four directional buttons are tactile switches connected directly to the STM32 GPIO pins to control the player's movement (Up, Down, Left, Right). OLED Display (SSD1306) is connected via SPI (or I2C) for real-time rendering of the game world, player character, and status messages. Life Indicator LEDs show the remaining player lives. Passive Buzzer: Connected to a pin for dynamic tone generation. It provides auditory cues for game events, such as losing a life.
Log
Week 5 - 11 May
Week 12 - 18 May
Week 19 - 25 May
Hardware
The system is powered by an STM32 microcontroller (ARM Cortex-M), utilizing its SPI, GPIO, and PWM peripherals to interface with external components.
Schematics
Bill of Materials
| Device | Usage | Price |
|---|---|---|
| Display LCD | Game screen | 35 RON |
| Breadboard | Connecting the components | 7 RON |
| NPN transistors | Electronic switch | 3 x 1.5 RON |
| Buttons | User input | 6 x 2.5 RON |
| Buzzer | Auditory feedback | 12,5 RON |
Software
| Library | Description | Usage |
|---|---|---|
| st7735-lcd | Display driver for ST7735 | Used for the 1.77" TFT display |
| embedded-graphics | 2D graphics library | Used for drawing sprites and text |
| cortex-m-rt | Startup code and runtime | Bare-metal execution for STM32 |