This is my project for my embedded systems module
It was awarded an overall 96% grade and selected to be showcased at my university’s open day as an example of outstanding student work.
The system demonstrates techniques in C++ programming, multithreading, raycasting, timers/interrupts, and LCD rendering on constrained hardware.
The project includes:
- 🌀 Maze Game (3D raycasting with textures and dark mode)
- 🐍 Snake Game (scalable grid size, joystick + button controls)
- 🚀 Space Game (survival game with scaling difficulty and health system)
- 🎵 Music System (background playback using a dedicated thread + menu interface)
-
Multithreaded Music Playback
Background music runs seamlessly during gameplay, with support for random/next/stop controls. -
Raycasting Engine (Maze Game)
3D-style rendering with textured walls, floors, ceilings, and dynamic dark levels. -
Configurable Games
Snake scaling, refresh speed, joystick/button controls, and difficulty scaling in the Space Game. -
Responsive LCD Menus
Scrolling interfaces, dynamic option toggles, and clear feedback for user inputs.
I kept a detailed dev journal for this project, reflecting on design decisions, bugs, and what I learned.
- Language: C++ (Mbed OS)
- Platform: Embedded microcontroller with LCD + buzzer
- Core Techniques:
- Multithreading with Mbed RTOS
- Timers and interrupts
- Recursion for maze generation
- Collision detection (bounding box method)
- Raycasting for pseudo-3D graphics