Hallo Fieke,

erst mal must du festlegen, was passieren soll, wenn der RP6 auf ein Hindernis stößt. Da er ja wohl auf der Linie bleiben soll (sonst würde ja das Linienfolgen keinen Sinn machen), könnte er bei einem Hindenis nur anhalten und warten, bis es wieder weg ist ODER er könnte auf der Linie wenden und in die andere Richtung fahren.

Dein Hauptprogramm bleibt dazu dein Linienfolgeprogramm. In den Main-Teil (vor der while(true)-Schleife) kopierst du nur:
ACS_setStateChangedHandler(acsStateChanged);
powerON();
setACSPwrMed();

... und schreibst eine neue Routine void acsStateChanged(void):
Für die ersten Tests kannst du z.B. anhalten (moveAtSpeed(0,0) ), wenn ein Hindernis erkannt wird und weiterfahren (moveAtSpeed(slinks,srechts) ), wenn kein Hindernis mehr da ist.

Der Befehl moveAtSpeed(slinks,srechts), der jetzt in der While(true)-Schleife am Ende steht, müßte dann raus. ODER: Du setzt in der Routine void acsStateChanged(void) nur ein Flag (Stoppen oder nicht), das du dann mit einer If-Konstruktion in der Hauptschleife abfragst.

Gruß Dirk