Wenn kein Hindernis erkannt wird geht das Programm in die for Schleife, erhöht die Geschwindigkeit, und verlässt danach die for Schleife mit Geschwindigkeit=255. Beim nächsten Durchlauf der while Schleife wird wieder kein Hindernis erkannt - es wird wieder in die for Schleife gesprungen, die mit spd=1 initialisiert wird. Was passiert? Asuro wird abgebremst, langsam erhöht sich die Geschwindigkeit wieder auf 255.

Lass die for Schleife weg, und platziere das Sleep außerhalb aller if/else Abfragen.