Загрузка данных



void readPotentiometers() {
  static float filteredP = 0;
  static float filteredN = 0;
  static bool initialized = false;

  int rawP = analogRead(PULSE_POT_PIN);
  int rawN = analogRead(CYCLES_POT_PIN);

  // Первичная инициализация фильтра
  if (!initialized) {
    filteredP = rawP;
    filteredN = rawN;
    initialized = true;
  }

  // Экспоненциальное сглаживание
  filteredP += (rawP - filteredP) * 0.08f;
  filteredN += (rawN - filteredN) * 0.08f;

  // Преобразование сглаженных значений
  int newP = 5 + (int)(filteredP * 20.0f / 1023.0f + 0.5f);
  int newN = 10 + (int)(filteredN * 90.0f / 1023.0f + 0.5f);

  pulseDuration = constrain(newP, 5, 25);
  targetCycles = constrain(newN, 10, 100);
}