Introduction
This is a page about all my projects from university coursework to projects i worked on at home.
Valentines Project
This is a creative IoT-based Valentine's Day project that brings romantic LED light displays to life through wireless communication. Jack's system uses a Raspberry Pi Pico microcontroller with 12 addressable NeoPixel LEDs to create an interactive, networked light show that can be triggered locally via a button press or remotely through MQTT messaging.
The project centers around a theme of connection and mutual moments—when Jack presses a physical button on his device, it triggers one of seven beautiful light patterns (including "heartbeat," "pulse," "sparkle," "rainbow," "love_wave," "rose_garden," and "romance_album"). Simultaneously, the system broadcasts this moment to a partner via MQTT over the internet using HiveMQ Cloud as the broker. The truly special feature is the "mutual moment" detection: if both Jack and other press their buttons within 2 seconds of each other, both devices light up with a synchronized pattern, creating a magical shared experience despite physical distance. This project elegantly demonstrates how IoT technology can be used to bridge gaps, making it a particularly fitting use of embedded systems for expressing connection and affection during Valentine's Day.
Valentines Project Files
Download my code here. You will need a Raspberry Pi and other equipment to run.
💾 Download CodeProject Nova
This is an engaging turn-based strategy game where two players compete to locate and capture various sea creatures hidden on a 16x16 grid. Drawing inspiration from classic battleship-style games, players take turns guessing coordinates to find creatures before their opponent does. The game features four different creature types—Rays (V-shaped, 5 cells), Anemones (circular, 8 cells), Fish (linear, 3 cells), and Crabs (single cell)—each randomly placed and oriented on the hidden grid at the start of the game. Players earn 5 points for each successful hit and must reach 100 points to win, creating a competitive dynamic where both players are racing to discover all the creatures first.
The game incorporates full save and load functionality, allowing players to pause their matches at any point and resume later without losing progress. A pause menu appears every four turns, giving players the option to save their game, continue playing, or exit gracefully. The interface provides clear feedback on each guess (hits, misses, and duplicate guesses), and at the end of the game, comprehensive statistics are displayed showing both players' final scores, health, number of guesses, and their complete grids. With its intuitive coordinate-based guessing system, creature variety, and strategic gameplay, this project demonstrates solid object-oriented design principles through the Player class and effective file I/O handling for game persistence.
Memory Game
This is a digital adaptation of the classic Simon Says memory game, built on a Raspberry Pi Pico microcontroller with four colored LED buttons (red, blue, green, and yellow). The game challenges players to memorize and replicate an increasingly complex sequence of LED flashes and button presses. Each round, the game randomly adds a new color to the sequence and displays it by flashing the corresponding LEDs. Players must then press the buttons in the exact order shown; if they press the wrong button or press a button out of sequence, all four LEDs flash and the game immediately ends. The game features adjustable difficulty levels—players can select their preferred speed at startup (slow, normal, fast, or really fast) by pressing the corresponding colored button, which affects how quickly the LED sequence is displayed.
The project seamlessly integrates IoT functionality through MQTT connectivity to HiveMQ Cloud, allowing the game state (win or lose) to be published and shared across a network in real-time. This networked feature enables the game results to be monitored remotely or used to trigger actions on other connected devices. The use of a custom Components class encapsulates each button-LED pair, making the code modular and scalable. With its intuitive button-based interface, progressive difficulty, and networked capabilities, this memory game demonstrates both embedded systems programming and cloud connectivity, making it an engaging way to test cognitive skills while showcasing IoT integration on microcontroller platforms.
Memory Game Code
Download my code here. You will need a Raspberry Pi and equipment to run.
💾 Download Code and Documentation