Nuclear Keys Game
This preset sets up a compact, high-pressure challenge where players work through a staged two-button interaction sequence to arm and resolve the game. It is designed as a reusable starting point for escape-room style countdown or disarm moments, with built-in logic, transitions, and output behaviors ready to customize for your show flow.
This guide explains the built-in setup preset and the behavior pieces that make it work. The walkthrough video for the three advanced button presets is Advanced Button Games on YouTube.
Where to start
- Open the Prop Wizard or setup preset flow.
- Choose Nuclear Keys Game from the available presets.
- Apply the preset.
- After the controller saves and reloads, inspect the generated sections listed below.
- Adjust pins and physical wiring in Configuration > Connections > Inputs, Outputs, and Modules before final testing.
Generated hardware
| Input | Type | Pin | Polarity | Pull-up |
|---|---|---|---|---|
| button1 | button | 42 | Active low | Pull-up on |
| button2 | button | 41 | Active low | Pull-up on |
| Output | Type | Pin | Polarity | Behavior |
|---|---|---|---|---|
| relay | relay | 1 | Active high | Steady |
| Pixel strip | Pin | Pixels |
|---|---|---|
| pixels | 2 | 20 |
Game flow
- A press on either button starts a short variable-based timing window.
- The second press only solves if both buttons are down while
onePressedis still true. - The
clearedvariable blocks retriggering until both buttons have been released. - Solving turns the relay on, starts green pixel feedback, enters
Solved, then auto-resets toArmed.
States and timers
The preset starts in Armed.
| State |
|---|
| Armed |
| Solved |
| State | Returns to | Delay | Timer id |
|---|---|---|---|
| Solved | Armed | 3000 ms | auto_Solved |
Variables
| Variable | Type | Initial value |
|---|---|---|
| onePressed | boolean | false |
| cleared | boolean | true |
Input sequences
This preset does not use Input Sequences.
Logic rules
Logic Rules are the condition checks. They decide when a named event is true, but they do not directly move relays or pixels until an Action Trigger uses them.
| Rule | Match mode | Conditions |
|---|---|---|
| eitherPress | any | input button1 = true input button2 = true |
| bothRelease | all | input button1 = false input button2 = false |
| secondPress | all | input button2 = true var onePressed = true input button1 = true |
| pressTimerStart | all | logic eitherPress = true var onePressed = false state = Armed var cleared = true |
Action triggers
Action Triggers are the work steps. They listen to inputs, logic rules, states, or sequences and then set states, variables, relays, and pixel effects.
| Action trigger | Source | Runs while | Steps |
|---|---|---|---|
| pressTimer | logic:pressTimerStart | * | 10 ms: set_var -> onePressed = true 500 ms: set_var -> onePressed = false 0 ms: set_var -> cleared = false |
| solve | logic:secondPress | * | 0 ms: relay -> relay = on 0 ms: light_effect -> pixels = start, solid, color #114d00 0 ms: set_state -> Solved |
| reset | state:Solved (exit) | * | 0 ms: relay -> relay = off 0 ms: light_effect -> pixels = stop 0 ms: action_trigger -> released |
| released | logic:bothRelease | * | 0 ms: set_var -> cleared = true 0 ms: set_var -> onePressed = false |
What to customize first
- Rename inputs and outputs to match the physical labels on your prop.
- Confirm every generated pin matches the wiring shown on the board pinout.
- Adjust pixel strip count under Configuration > Lighting > Addressable Pixels if your strip is not 20 pixels.
- Change the reset timer or reset action if you do not want the game to automatically re-arm.
- Keep the generated Logic Rule names until the game is tested; the Action Triggers reference those names.