         // Flip the color state bit
         currentState ^= bit(colorBit);
       }
+
+      // Trigger recalibration
+      isCalibrating         = true;
+      calibrationIteration  = 0;
+      avgIdlePressure       = 0;
     }
   } else {
     heldMillis = 0;

// Given the sensor value, this function computes the current state
// of the transmitter.
void updateCurrentState(int sensorValue, byte colorBit) {
//  Serial.println(sensorValue);

  // We've met the squeeze threshold.
  if(sensorValue > avgIdlePressure + TURNON_SQUEEZE_THRESHOLD) {

    // We've squeezed for a duration of at least TURNON_HOLD_MILLIS
    if(heldMillis >= TURNON_HOLD_MILLIS) {
      heldMillis  = 0;
 
      // Special case: if the color bit is 0,
      // reset the current state
      if(colorBit == 0) {
