I have tried to make a musical, light-up Ugly Christmas Sweater each year since 2013 - the only year I skipped was 2021! For this year’s sweater, I found a cute Among Us design that made me think I could turn it into a game. Among Us isn’t as popular as a video game as it was in its heyday, but it’s still a popular meme, and as a middle school teacher, I can verify that young teenagers still think Among Us characters are cute and funny.
I chose an Adafruit Feather 32u4 Bluefruit LE as my microcontroller. I love it because it’s tiny, has many stackable FeatherWing accessories, and the BLE functionality is so easy to use. However, it has a very small amount of storage, meaning I had to write lightweight code that didn’t include all the functionality I hoped to include! I wanted to also have a Neopixel matrix attached that would show messages such as “Blue is not the imposter”. However, if I included the libraries for Neopixels, the Neopixel Matrix, the Bluetooth Low Energy, and the Music Maker, I ran out of storage in my Feather microcontroller. I had to eliminate the matrix and write a very tiny program.
I started by breadboarding the Feather and the Neopixels, laying out the pattern of lights that I could use to play the Among Us game I envisioned.
In the game, each Crewmate is associated with a light. When the game starts, each Crewmate lights up, but one of them (and only one) does not light up twice. It only lights up once. You then have to move a cursor with arrow keys to identify the imposter and eject it from the craft. I pinned my neopixel dots to a piece of fabric so I could plan out which neopixels would be used for the game and which would stick through the sweatshirt as decoration. I got the Bluefruit working, could send colors to the light string, and got a prototype of the game running. An early version of the game gave you feedback with a little 8x8 matrix. This video shows how it worked!
https://drive.google.com/file/d/1hEJxjNsAtpTIdLEGQ8y_GuS7TPJGg9xR/view?usp=share_link
When I added the MusicMaker Feather Wing, I had to make some adjustments. I found by reading through this tutorial (https://learn.adafruit.com/talking-musical-neo-pixel-clock-with-infrared-ble-and-touch-controls) that the Bluefruit and the Music Maker don’t “Play well together”, because they use some of the same control pins. I used macros to turn the BLE off whenever the music maker was playing sounds, and then turn it on again when the sound was done. I had hoped to have sound effects in the background while you played the game, but no luck there. I was able to include this in previous sweaters that used the Flora controllers and a separate MP3 player, but the Feather ecosystem is different.
Nevertheless, I soldered the Feather to a protoboard to keep everything nice and solid, and connected the Neopixel wires to the protoboard. I stacked the Music Maker on top and wired it to the external speakers.
To organize the lights in my code, I keep a little document showing which pixels are located where on the sweater. In the code, when you're playing "Find the Imposter", it's also helpful to think of the grid of 12 crewmates as a matrix, so I used their (y, x) coordinates as well.
I sewed the lights to the sweater by creating button holes on the locations where Neopixels would pop through. I poked the Neopixels through the holes and then stitched them closed behind the lights.
I sewed little fleece pouches in the hem of the sweater to hold the microcontrollers and the battery. The switch is tacked to the inside of the hem with some thread, and I also bundled up any loose wire with some thread and tacked that down too.
I enjoyed adding sound effects to the “Find the Imposter” game, and then I coded a little music/light show to a meme song called “Show Yourself” by CG5 (https://www.youtube.com/watch?v=6yvfU8xK_VQ). This is a cute song that a lot of folks recognize.
Originally I was also hoping to have the original “Find the Imposter” game, a light/music show, and another game that would be a “Memory Match”. However, I used ALL of my storage space (there are seriously like 50 bytes left) on the program that had the “Find the Imposter” game and a music / light show. Perhaps at some point I can swap out the light show for the Memory Match game, but for now I’ve shelved it!
I’m looking forward to wearing this out at an Ugly Sweater party. Who wants to invite me? (And how do I know you’re not the imposter?)
Here's a link to the Show and Tell video:
And a shorter demo if you just want to see really quickly how it works!
Comments