The hourglass made it through the run of the show and it worked well.
The timing harder than expected.
I assumed timing would be simple, set the GIF length, done. I forgot that the board runs logic with every single frame as it processes and sends data to the matrix, which slows playback down in ways that aren’t obvious until you’re testing. My naive approach didn’t work.
I brought in Claude AI to help add code that estimates actual animation duration and adjusts the frame rate accordingly. That got me closer, but it was still off. So I had Claude add a manual runtime override as well. Even then, getting all five animations to land on target took dozens of rounds of testing. Tweaking GIF length, adjusting the manual offset, running it, measuring it, doing it again. Five animations with runtimes over ten minutes total meant each round of testing took a while. A few ended up about two seconds off, but given the natural variance of live music, that’s close enough.
We ended up going with stain instead of paint. It came out darker than I would have preferred, but it looks good.
The acrylic bending was the most frustrating part of the physical build. I overheated it in a few spots. The sona tube mold worked but required a lot of patience, clamps, and tape. One corner never fully cooperated and got a dot of hot glue to hold it in place.
The prop itself performed well. The accelerometer reliably caught the flip, the animations played, the NeoPixel color coding let the actor confirm the right scene was loaded at a glance, and the button backup was there when needed.
The issue was the battery. People kept forgetting to unplug and recharge it between performances. We ran it down more than once. Fortunately, it turns out theater people carry a lot of phone battery packs, we borrowed and kept going every time.
It was a genuinely fun build. The Adafruit Matrix Portal S3 is a capable little board, and I’m already thinking about what else I could do with it. More excuses to mess with LED matrices incoming.
Below is a short vid of the hourglass after I had the bulk of it done and assembled and testing the code.
