Nah klär. Auf nur eine stelle in dein program wird die motor richtung geändert (auf rückfährt). Nachdem er zuruckgefahren hat von einer obstruktion muss er doch wieder forwärts gehen, oder? Auf welche stelle war das am besten?

Code:
for(d=0;d<100;d++) 
            {MotorDir(RWD,RWD);
Wieso machst du dass 100 mal? Das dauert nur ein sehr kurzes augenblick. Es fahrt kaum zuruck. Warten muss man mit Sleep.

Und diesen 2-ten Init() nach dem else?? Wieso?

[EDIT]Ok, Init() setzt auch die motorrichtung wieder im forwärts zustand und den geschwindigkeit auf nul. Er tut aber viel mehr was nicht nötig ist, und vielleicht auch unwunschlich. (wie backleds oder statusled an/aus)