Hallo Wo2le,
erst einmal ein willkommen im Forum.

Das mit den 'unsigned char'-Variablen solltest du auf alle Fälle austauschen. Variable als 'int'-Typ definieren gibt zwar ein paar Compilerwarnings, aber damit kann man erst einmal leben.


Versuche doch mal die Anweisung
- Msleep (distance * x / speed);

zu ersetzen mit:
- NeueIntVariable = (int)((float)distance * (float)x / (float)speed);
- Msleep (NeueIntVariable);

Eventuell hilft es dem Compiler vor allem die Division mit Nachkommaanteil zu erzwingen, damit zum Schluß hoffentlich etwas funktionierendes raus kommt.

Gruß Sternthaler

P.S.: Ansonsten kann ich auch keine Stelle finden die mir fehlerhaft vorkommen würde.