I have zero background in electrical engineering, but a lot of time tinkering until I can figure something out. I'm a software engineer and software has similar problems as hardware, so I have plenty of experience testing and failing repeatedly.
For background, I speedrun video games in my spare time and the main category I speedrun has turbo functionality allowed for cutscenes (because they're quite long so it's nice to step away for a few minutes and take a break) but only for 10Hz autofire rate. There is literally no SNES controller with turbo functionality that can limit down to 10Hz. Most are 30Hz, but some can do 15Hz, which disqualifies my speedruns with those controllers ;)
"Why not just use software?" is what you're thinking. Well what fun would that be?! ;)
So I started out by asking a couple of electrical engineer friends how they thought I could solve this problem (as, again, I have zero knowledge of electrical engineering up to this point). I was told to use a "555 timer ic" to solve it, so naturally, having no idea what that meant in any capacity, I went to Google. I came to find out that "ic" meant "integrated circuit". Well, I sure know what that is! Turns out the 555 timer is a perfect option for this task with the astable mode.
I went to work figuring out what parts I would need. A tutorial for making an LED diode flash on a timer was the perfect starting point. I immediately bought a small electrical parts kit on Amazon, including breadboard, resistors, capacitors, LEDs, and plenty of wires.
When my parts arrived, I had already had a chance to watch the tutorial video plenty of times so I had a basic idea of what needed to be done. I believe this was the first time I had ever used a breadboard as well. I got to work and copied the tutorial exactly. Luckily my kit includes a potentiometer which was also in the tutorial. I was able to get the circuit working! I even adjusted it (manually) to a quicker rate, but had no idea how to get it exact, or even close.
The next step was figuring out how to trigger the "A" button on a Super Nintendo controller, purely by using it with my circuit. After a lot of testing, videos, schematics, and tutorials, I was led to using a multimeter to test for continuity (had no idea this was even a thing until this point). This showed me exactly which pin on the controller ICB was responsible for handling the "A" button signal back to the console.
Using the output for my circuit to the controller ICB pin, in place of the LED diode, proved... problematic. Up to this point my circuit was using a 9V battery to power up, which would keep shorting out my SNES controller... I didn't realize the problem until I saw sparks when I would connect the wire to the pin on the fifth or sixth attempt. "Just use the controller's existing power supply" was the response from my friends. Back to Google...
Luckily there are a lot of information online about the SNES controller, and even its schematic for power/ground from the console. Integrating the power into my circuit was a little tricky, but not horribly difficult. Mostly trying to test without soldering was the hard part.
Now my circuit was working, and connected, but severely limited because it was always-on. The next step was to get a power switch of course. I went through a lot of trouble trying to understand how transistors work because I thought I needed a NOT gate in between the circuit and the power switch, when after many hours of tinkering I realized the power switch would do what I want on its own.
My breadboard was looking like a mess at this point, so I decided to clean it up a little bit, which still looked messy, but it was working. It was ACTUALLY WORKING!! After a week I thought to get a blank open PCB from Amazon as well as some cable couplers to improve the experience of using my turbo circuit.
With the knowledge that I could just follow my breadboard's design, I was able to quickly throw together a decent-looking PCB and...Read more »