Ob den Restliche Code kein Einfluss hat wurde ich nicht Ausschließen. Aber ok. Es gibt schon ein erklärbare Ursache in deinem Code.

Den Messwert-kurve der beiden Linien Sensoren ist nicht gleich wegen Bautoleranzen (Fototransistor selbst, und den Wiederstande mit dem es ein Spannungsteiler macht, Orientierung usw.). Sie können unterschiedliche Messwerten zurück geben, eben wen sie über eine Gleich-massige Untergrund stehen. Die Werten sind fast nicht das selbe ohne Justierung. Das kann eben abhängig sein von ob es über einem Schwarze oder Weiße Untergrund steht weil sie nicht ganz gleich empfindlich sind. Eine erste 'Feinabstimmung' könnte sein erst die Differenz zwischen den beiden Werten zu errechnen (line[0]-line[1]; uber gleich-massige Untergrund beim Stillstand), und das später bei den Linien-fahrt nach jeder Messung von den momentane Differenz ab zu ziehen. Dan hat jeder messung entlang den Linie den Gleichen referenz wert. Den Motoren können aber auch den Messwerten ein wenig stören. Deshalb ist vielleicht auch ein kleine Hysteresis erforderlich zwischen Links und Rechts ablenken. (line[0]-line[1]-referenzdifferenz > oder < als zbs. 5) Dan wird es nicht so nervös steuern wen er schon uber ein linie steht.

Wie oft wechseln bei dir den Backleds?

Es gibt auch Beispielen hier im Forum wo 2 Messungen gemacht werden, einer mit eingeschaltete und einer mit abgeschaltete LED. Damit wird den Einfluss von Umgebungslicht beheben.