 #include <LiquidCrystal.h>
 #include <EEPROM.h>
 
+// Pin analogico de entrada donde va conectado el gas.
 #define GAS_INPUT A0
+
+// Pin digital de entrada donde va conectado el boton de calibracion.
 #define CALIBRATE_BUTTON 2
+
+// Duracion de la calibracion en segundos.
 #define CALIBRATION_DURATION 10 // seconds
-#define SMOOTHING_FACTOR 0.9
+
+// Valor entre 0 y 1 que suaviza la senyal de gas de entrada.
+// 0 -> suavizado maximo.
+// 1 -> sin suavizado.
+// 0 < x < 1 -> suavizado intermedio.
+#define SMOOTHING_FACTOR 0.3
+
 #define STATE_HEADER 0xcafebabe
 
 void read_state (CalibratedInput& calibrated_input)

{
  unsigned long t = millis();
  int calibrate_button = digitalRead(CALIBRATE_BUTTON);
  int input = read_3v3(GAS_INPUT);
  
  if (calibrate_button == HIGH && calibration.state() == Calibration::Idle)
  {
    calibration.start(t, CALIBRATION_DURATION, input);
  }
  
  if (calibration.state() == Calibration::Running)
  {
    calibration.update(t, input, calibrated_input);
    render_calibration(t, lcd, calibration);

    if (calibration.state() == Calibration::Idle) // calibration is done

      write_state(calibrated_input);
    }
  }

  // Output.
  int calibrated_gas = calibrated_input(raw_gas);
  render_input(calibrated_gas, lcd);
}
