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);
}