Skip to content

Simon Game

This preset configures a Simon-style memory game using four player buttons, a pixel strip for visual cues, and a relay output for the win condition. It is intended as a drop-in baseline for sequence-repeat gameplay where players watch a pattern, repeat it correctly, and trigger a physical unlock or effect when the puzzle is solved.

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

  1. Open the Prop Wizard or setup preset flow.
  2. Choose Simon Game from the available presets.
  3. Apply the preset.
  4. After the controller saves and reloads, inspect the generated sections listed below.
  5. Adjust pins and physical wiring in Configuration > Connections > Inputs, Outputs, and Modules before final testing.

Generated hardware

InputTypePinPolarityPull-up
button1button42Active lowPull-up on
button2button41Active lowPull-up on
button3button40Active lowPull-up on
button4button39Active lowPull-up on
OutputTypePinPolarityBehavior
relayrelay1Active highSteady
Pixel stripPinPixels
pixels220

Game flow

  • The first button press starts the staged Simon flow from Armed.
  • Each stage displays a longer color order on the pixel strip.
  • Each input sequence must be completed in the matching stage before advancing.
  • A sequence fail returns the game to Armed; completing the final stage enters Solved and turns on the relay.

States and timers

The preset starts in Armed.

State
Armed
Stage 1
Stage 2
Stage 3
Stage 4
Solved
StateReturns toDelayTimer id
SolvedArmed3000 msauto_Solved

Variables

This preset does not rely on variables.

Input sequences

SequenceRuns whileExpected codeTimeoutMismatch mode
sequence_1Stage 1red30000 msinstant_fail
sequence_2Stage 2red, green30000 msinstant_fail
sequence_3Stage 3red, green, blue30000 msinstant_fail
sequence_4Stage 4red, green, blue, white30000 msinstant_fail

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.

RuleMatch modeConditions
anyPressedanyinput button1 = true
input button2 = true
input button3 = true
input button4 = true
anyFailedanysequence sequence_1 = fail
sequence sequence_2 = fail
sequence sequence_3 = fail
sequence sequence_4 = fail
anySuccessanysequence sequence_1 = success
sequence sequence_2 = success
sequence sequence_3 = success
sequence sequence_4 = success

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 triggerSourceRuns whileSteps
solvedstate:Solved (enter)*0 ms: relay -> relay = on
0 ms: light_effect -> pixels = start, wave, color #37ff00
resetstate:Solved (exit)*0 ms: relay -> relay = off
0 ms: light_effect -> pixels = stop
startlogic:anyPressedArmed0 ms: set_state -> Stage 1
faillogic:anyFailed*800 ms: light_effect -> pixels = start, scanner, color #ffdd00, auto release 1200 ms
3200 ms: set_state -> Armed
3350 ms: set_state -> Stage 1
stageCompletelogic:anySuccess*1000 ms: set_state_next -> Stage 2 = {“steps”:1,“wrap”:true}
stage1lightsstate:Stage 1 (enter)*0 ms: output_sequence -> redLight = start
stage2lightsstate:Stage 2 (enter)*0 ms: output_sequence -> redLight = start
250 ms: output_sequence -> greenLight = start
stage3lightsstate:Stage 3 (enter)*0 ms: output_sequence -> redLight = start
250 ms: output_sequence -> greenLight = start
500 ms: output_sequence -> blueLight = start
stage4lightsstate:Stage 4 (enter)*0 ms: output_sequence -> redLight = start
250 ms: output_sequence -> greenLight = start
500 ms: output_sequence -> blueLight = start
750 ms: output_sequence -> whiteLight = start
redPressinput:button1 (true)Stage 10 ms: output_sequence -> redLight = start
greenPressinput:button2 (true)Stage 10 ms: output_sequence -> greenLight = start
bluePressinput:button3 (true)Stage 10 ms: output_sequence -> blueLight = start
whitePressinput:button4 (true)Stage 10 ms: output_sequence -> whiteLight = start

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.