Potentiometer entprellen

hi Leute,
wie kann ich ein potentiometer "entprellen". Da mein wer immer so +- 2 schwank. Und durch das nicht Konstant bleiben versucht der Schrittmotor zur neuen Position zu gehen.

Code:

	int analog1_in, analog2_in;
		analog1_in = (analog1_in - (analog1_in >> SMOOTH_FACTOR)) + (analogRead(0) >> SMOOTH_FACTOR);
		analog2_in = (analog2_in - (analog2_in >> SMOOTH_FACTOR)) + (analogRead(1) >> SMOOTH_FACTOR);
		Serial.println(analog1_in);

					if(analog1_in != analogRead(0)){
						stepper1.moveTo(analog1_in);
						stepper1.run();
						digitalWrite(enable, LOW);
					}else{
					digitalWrite(enable, HIGH);
					}

					if(analog2_in != analogRead(1)){
						stepper2.moveTo(analog1_in);
						stepper2.run();
						digitalWrite(enable1, LOW);
					}else{
					digitalWrite(enable1, HIGH);
					}
}

Das liegt nicht unbedingt nur am Potentiometer. Auch der ADC hat baubedingt +/- 1 Bit Abweichung wenn man genau auf dem Wert liegt wo das niederwertigste Bit ändert

Ein Potentiometer prellt nicht.

was für eine andere Möglichkeit gibt es diese ungenaugikeit aufzuheben bzw. einzudämmen.

Bilde einfach den Durchschnitt der letzten 20-30 Messungen. Damit sollte sich das Ergebnis stabilisieren

(deleted)

das untere Bit immer löschen oder setzen, so dass es nicht mehr brummen kann

Das hilft leider nicht, denn das 1 bit Schwanken beim ADC kann z.B. auch zwischen 0b100 und 0b011 (3<->4) stattfinden.
Wenn Mittelwertbildung (egal ob gleitend oder über ein Array der letzten x Messungen) nicht gewünscht ist,
weil man "echte" Änderungen lieber sofort und in voller Höhe haben will, kann man ein Verfahren bauen ähnlich wie es hier im ersten Teil Exception Filtering beschrieben ist (entspricht noiascas Variante b):

const byte e = 2; // Nur Änderungen größer e werden bearbeitet.
int lastval_0;  // für analogRead(A0)

int filter(int in, int& last) {
   if ( (in < (last - e) || (last + e) < in ) ) {
       last = in;
   }
   return last;
}

void loop() {
   int last = lastval_0;
   if (last != filter(analogRead(A0), lastval_0))
      Serial.println(lastval_0);
   }
}