I actually learned just enough CircuitPython to do what I want, and I am exceptionally pleased with the result. I haven’t soldered all the LEDs in place or the selector switch, but if it does work the way I’ve designed it, then the code should do the following:
At full charge, the blaster has 30 rounds. (Tested and confirmed).
Each trigger pull on the Lethal setting plays the blaster sound effect in Mp3 format, lights a red LED in the barrel, and decrements the ammo counter by 1. (Tested and confirmed)
Each trigger pull on the Stun setting plays the Stun sound effect, lights a red LED in the barrel, and decrements the ammo counter by 3. (Not yet tested; I wanted to differentiate the Stun setting function, so decided it consumes 3 charges instead of 1).
Ammo is represented by a bar graph LED with 10 bars; each bar represents 3 rounds. When a particular bar’s complement of rounds is recharging, it blinks. When the full complement is charged, it shines solid. (Not yet tested).
1 round recharges for every 6 seconds that the trigger is not pulled (tested and confirmed).
A momentary selector switch will transition between Lethal and Stun settings. When Stun is active, an LED will light up.
A power LED shines solid when the battery pack is showing a good charge. As the voltage drops, it will begin flashing and then go dark.
I’m hoping to run a full test tomorrow. I’ll be more than happy to share the code if anyone is interested.