     // start cooldown counter
     flameCoolDownTime.reset();
 
+    // when the solenoid closes, there's a lot of EMI that disrupts sensors.  Ignore the sensors for a period of time.
+    sensorEmiCooldown.interval( config.flameCoolDownTime + EMI_COOLDOWN ); // add a little more time.
+    sensorEmiCooldown.reset(); // sensing needs to pause.
+    emiInterference = true;
+
     Serial << F("Flame on! ") << fireLevel << F(" mapped [") << config.minFireTime << F(",") << config.maxFireTime << F("]");
     Serial << F(" -> ") << flameTime << F("ms.  Cooldown: ") << config.flameCoolDownTime << F("ms.") << endl;
   }

    }
  }

  if ( networkTimeout.check() ) networkTimedOut = true;

  if ( systemResetFlag ) {
    // if the reset pin is held, turn to red lighting
    redTestPattern();
  } else if ( networkTimedOut ) {
    // comms are quiet, so some test patterns are appropriate
    if( !gameEnableFlag ) {

// but only fire this often.
Metro flameCoolDownTime(1000UL);
// there's quite a bit of EMI from the solenoid firing, so we add a cooldown on reading sensors
#define EMI_COOLDOWN 1000UL
Metro sensorEmiCooldown(EMI_COOLDOWN);
boolean emiInterference = true;

// when we're out of the network, update the lights on this interval (approx)
#define SOLO_TEST_PATTERN_UPDATE 3000UL // ms
