Fried Rice Master
←Back to play

Fried Rice Master

A phygital cooking game where a circuit board becomes the frying pan

Fried Rice Master turns an Adafruit Circuit Playground Express (CPX) into the handle of a frying pan. Press its buttons to add ingredients, then toss the board to stir-fry them on screen until the rice turns golden.

I built it solo: the concept, the board’s MakeCode program, and the p5.js game, with Gemini as a coding partner along the way.

Role

Solo: concept, hardware & code

Tools

Circuit Playground Express, MakeCode, p5.js, Gemini

Context

Course project, UW MHCI+D

Year

2025

The full loop in 40 seconds: add ingredients, toss, serve.

Idea

Plugged in, the board already looked like a pan

The concept came from the hardware itself. With its USB cable attached, the round CPX looks and feels just like a frying pan on its handle.

That sparked a “phygital” (physical + digital) fried-rice game where the controller defines the experience.

Holding the round Circuit Playground Express board in front of a laptop showing the empty pan in the game

How it works

Two buttons and a toss

The CPX acts as a USB keyboard. Each input types a short command (RICE, EGG, COMBO or TOSS) that the p5.js game listens for.

Game screen at the start: white rice, egg, shrimp and green onion in the pan, progress bar empty

Step 1

Add ingredients

Button A adds rice, B adds eggs, and A+B add shrimp and green onion. The LED ring lights up to match.

Game screen after tossing: the rice has turned golden and the progress bar is almost full

Step 2

Toss to cook

The accelerometer detects each toss. The ingredients fly up and mix, and the rice browns as their cooked level rises.

Victory screen reading DELICIOUS! You made the Golden Fried Rice! above a plate of fried rice with a fried egg

Step 3

Serve

Once the rice reaches perfect browning, a procedurally generated plate of golden fried rice appears.

Under the hood

MakeCode blocks for the CPX: button A types RICE, button B types EGG, buttons A+B type COMBO and shake types TOSS; button presses also light the LED ring

On the board (MakeCode): every input types a command; button presses also light the LED ring.

The p5.js editor with the game sketch on the left and the cooking game preview on the right

On screen (p5.js): the sketch reads each command and runs the pan physics.

Challenges

Firmware fights, and a feature I had to cut

The vibe-coding trap

I started with pure vibe coding. Gemini suggested CircuitPython, but its knowledge was out of date for the current CPX libraries. The version mismatch caused constant crashes (the blinking red light of death), and about 60% of my time went to debugging firmware. Switching to MakeCode solved in minutes what had taken hours to fail in Python.

A microphone that heard every click

I wanted a “blow to put out the flame” feature, but pressing the buttons physically triggered the board’s microphone. When I raised the sound threshold in code, the CPX disconnected and the program failed to download. I cut the feature to save the project.

Learnings

AI moves fast, but I still decide when to change course

01

Pivot fast

When a tool isn’t working, don’t sink more time into it. Rapid iteration means being willing to abandon a broken path right away, and knowing when to do that still takes human judgment.

02

AI knowledge has an expiration date

Gemini’s training data on hardware libraries wasn’t current. With firmware, I now double-check any version an AI suggests.

03

Prompt for polish, hand-edit the layout

AI generated the procedural rice art with almost no errors, but kept overlapping the text and progress bar. For spatial UI tweaks, reading and editing the code myself was faster than prompting.

UMI CHEN

Product Designer

© 2026 UMI CHEN