genau das wollte ich dir erklären.

in der endlosschleife (while(1)) rufst du erst die funktion geschw_einlesen() auf. dabei wartert der prozessor so lange, bis er einen buchstaben übermittelt bekommmt. vohrer kommt er in deinem code nicht weiter.
wenn er dann eine geschwindigkeit hat (ein buchstabe wurde empfangen), geht es weiter zum einlesen der liniensensoren und die geschwindigkeiten der motoren werden dem entsprechend gesetzt.
danach geht es in der endlosschleife wieder von vorne los. dh. der prozessor wartet auf einen buchstaben. solange du keinen ein gibst kommter der prozessor im code nicht weiter (er ist in der funktion geschw_einlesen() "gefangen").
erst wenn du wieder einen buchstaben eintippst werden wieder die liniensensoren eingelesen. daher wird auch nicht korrigiert!!

eine mögliche lösung wäre, dass du das empfangen eines buchstaben vor die endlosschleife schreibst. dann kannst du zwar nur am anfang eine geschwindigkeit festlegen, dafür funktioniert aber die linienverfolgung.

eine andere möglichkeit das zu realisieren fällt mir gerade nicht ein