What did you make?
I built a DIY mini handheld console powered by an Arduino Nano! My main goal was to dive into embedded systems development and get hands-on experience with hardware and C++. Because of this, I focused on core functionality rather than super complex games.
When you turn it on, you’re greeted with a scrolling “mini console” text, followed by a game selection menu. During gameplay, pressing the designated pause button opens a pause menu where you can either resume (saving your current progress) or exit to the main menu. I included two games: Snake and Flappy Bird.
What was challenging?
Generating non-blocking audio feedback was definitely the hardest part. I implemented button click sounds using PWM to control the volume, which took a lot of time to tune since working with audio signals is trickier than controlling a motor. It required pseudo-multitasking using millis() to keep the gameplay smooth while playing sounds.
Also, in Snake, I initially didn’t use a grid-based movement system and implemented pixel-by-pixel movement instead. Because of this, collision detection with food can occasionally miss.
What are you proud of?
I’m really proud of the software architecture and code structure in several parts of the project. I focused on clean OOP principles, solid encapsulation, and clear code organization (though a few spots are still a bit messy!). I’m also proud that i didn’t use delay funtion and of my Settings.h file
What should people know so they can test your project?
To test or build it, you just need to know how to connect the display and buttons to an Arduino Nano. Inside the Settings.h file, you can easily customize pin configurations, volume, colors, display sizes, and game speeds. I also added comments throughout the codebase to make it easy to follow along!
- 9 devlogs
- 28h