   if (state == 2)
   {
     setCalibration(true);
-    if (selector_pos >= 0)
+    if (buttonPressed())
+    {
+      // Button resets.
+      state = 0;
+      resetLights();
+    }
+    else if (selector_pos >= 0)
     {
       // Fill in new connection states.
       // Usually a noop.

// How many frames to wait before toggling blinking lights
int BLINK_SPEED = 50; // 0.5s
// How many frames to wait before logging debug data, or 0 for never
int DEBUG_FREQ = 0; // 2s

// MAIN TOPLEVEL STUFF


        servo.write(servo_open);
        sendCastleSuccessMessage();
      }
    }
    if (state != 3 && selector_pos < 0)
    {
