The basic button controls have been added to my Nerf controller, so now it’s time to add a bit of flash: an RGB indicator light and a hidden touch-sensitive button.
The planning for the controller is complete and the disassembly of the Nerf gun is done. This is where the real fun begins – modifying the revolver and starting the electronics.
Lately I’ve been watching my fair share of Twitch, and one of my favorite streamers is a kiwi by the name of Rudeism. Although he’s quite an entertaining streamer in his own right, one of his gimmicks is that he plays games “wrong”. That is to say, he likes to play games in a way that’s not standard – something he calls “AltCtrl”. He’s played Overwatch’s Winston with bananas, Skyrim with voice-only controls, and Player Unknown’s Battlegrounds (PUBG) with a frying pan, just to name a few of his many AltCtrl projects. You can find his streams on Twitch.
I think the whole idea of “AltCtrl” is quite intriguing, and it would be fun to build my own controller that matches the animations in a game. I’m going to try doing just that by making my own controller for Overwatch out of a Nerf Hammershot revolver.
With the LED characters in-hand, the next step is to write an embedded program to display integers and strings on the time circuit displays. The goal is to be able to set the characters for each display group based on simple variables, so doing something like displaying the time returned from a real-time clock (RTC) becomes trivial.
Before the time circuits can display the time, step one is figuring out what the “proper” LED characters actually are. There is in fact no standard set of characters for segmented LEDs, and the Back to the Future series takes some liberties with the alphanumeric segments. Still, I can do my best to reproduce them as faithfully as I can.
Now that all of the time circuit display electronics are in the mail it’s time to talk about programming the display. This starts with learning how to control LEDs with the Holtek HT16K33 integrated circuit (IC), which I’m using as the display’s matrix driver.
The time circuit display is a mix of three LED types: alphanumeric displays, seven-segment displays, and standalone 3 mm LEDs. Each one has a different height off of the circuit board and a different distance to the faceplate. I need to offset the components so all of the parts mate with the faceplate correctly, which requires sourcing LED standoffs and designing my own custom ones.