If the board never appears
- Open the Serial Monitor at 115200 baud and restart the board.
- If
room.begin()rejected a declaration, the reason is printed there. Fix it in the sketch and upload again. - Check that the sketch has no
Serial.begin()at another speed and never prints a line that starts with{. - Close the Serial Monitor and pair again.
room.begin():
If the controller runs out of memory
Restart the board and try again. If it keeps happening, reduce your sketch’s memory use: large buffers,String building in loop(), and large
JsonDocuments. On a Room with few props, a smaller ed::BasicRoom saves RAM.
If presses are missed
- Check that
loop()asks for each input on every pass, withpressed()orroom.nextPress(). A press that no code asks for is dropped. - For a sequence, call
room.nextPress()and notpressed()for the same inputs. Whenroom.lostPresses()is non-zero, start the sequence over: presses were dropped, so its order is incomplete. - Look for
delay()or loops that wait. Replace them as in Replace delay().
If a signal doesn’t reach Escape Director
- Signals are sent only during a live game, never in Test mode.
- Pass the input that caused the signal:
prop.trigger("solved", lever). - A signal more than 2 seconds old, or from an earlier game, is dropped. This can happen when a press waited through a reconnect.
If an output stays on or turns off late
- Use
room.pulse(), notroom.after(), for an output that must end on time. - Don’t turn a pin on yourself while it pulses. Setting it back to its idle level early is fine; the pulse still ends on time.
- Up to 8 pins can pulse at once.
room.pulse()returnsfalsewhen none is free.
If a command works once and then undoes itself
The command probably writes a pin that yourloop() writes back from
unchanged puzzle state. Make the command call the same function your local
input calls, so the puzzle state changes too.