Purpose of this project is to code a phaser prop from star trek TNG / DS9 / VOY / LD.
This will try to support both the 2 row, 16 intensity setting type 2 phaser and the 1 row, 8 intensity setting type 1.
This is coded in circuitpython and meant to be run on an adafruit rp2040 propmaker board with a custom PCB attached. Settings and beam neopixels, buttons used will be on a custom designed PCB.
Project scope / intended features:
- 3 buttons: 2 for settings and 1 main trigger
- firing sound mapped to button press. keep firing sound playing in loop while trigger held down. need 2 sound files to do this, with warmup sound separate from active firing. active firing sound must be loopable.
- have setting buttons cause setting change sound to play
- 2 chains of neopixels: 1 for settings and 1 for beam
- have neopixels for beam flicker slightly during firing
- display current battery level in setting neopixel row when battery is charging - animated blue?
- support a "warning shot" mode, where a single white led is lit in setting bar, and firing in this mode has beam at its dimmest with sound at its loudest
- for type 2 (16 setting leds), have settings 1-8 light only 1 row from left to right as all green. for settings 9-16, light top row red while also fading bottom row from green to orange.
for type 1 (8 setting leds), have settings 1-8 fade from green (at 1) to red (at 8). - ability to set phaser to overload - hold down setting increase button for 3 seconds while setting is already at maximum. play "overload" sound and have all setting LEDs flashing red at a gradually increasing rate over 10 seconds before playing an "overload explosion" sound. after overload routine finishes, set phaser to sleep mode.
- ability to activate wesley crusher's "autofire" mode - hold setting decrease button for 3 seconds. this mode, when active, should have current intensity setting leds flash. this mode should be deactivated when either setting button has been pressed, and setting leds should return to solid on to reflect that.
- sleep mode. when no buttons on the phaser have been pressed for a certain amount of time (2 minutes - this is a constant defined at the top of the code), all lights turn off and power use is minimized until a button has been pressed to wake again.
potential functions:
"grime washing mode"? not sure what this would be, or how it could be displayed in settings bar. maybe this is the same as "warning shot".
potential non-canon settings: (need to figure out if these should persist between full powercycles)
beam brightness - including an "off" option, if anybody uses this for filming and wanted to add beam in post prod?
setting led row brightness
sound effect volume level
reset all settings to default
References:
https://learn.adafruit.com/mp3-playback-rp2040
To-do:
- modify flicker behavior to instead randomly set 2 beam chain pixel colors
- flash battery level when setting down button is held for 2s and intensity already at minimum (in Mariner mode)