die geben wie schon oben beschrieben nur Werte zurück die bis 26000 oder so ansteigen und dann wieder bis knapp unter 0 sinken. Ich wüsste jetzt nicht auf anhieb wie man das lösen könnte.
Das sind ja die Variablen mleft_dist und mright_dist, die als uint16_t definiert sind.
Wenn du int16_t nimmst, dann kann das so ähnlich aussehen, wie du beschrieben hast.

Ich würde uint16_t nehmen:
var = getLeftDistance();

Dann mit einer 2. Variable vergleichen, die immer um einen festen Betrag hochgezählt wird. Der Betrag entspricht der 20cm Distanz.
Der Überlauf ist kein Problem, weil ja var und deine 2. Variable beide überlaufen.

Gruß Dirk