Hallo
Bei jedem while-Schleifendurchgang wird über den Tasterstatus entschieden ob der Linienfolge- oder der Zurückfahrzweig durchlaufen wird. Das er im Rückwärtsgang bleibt hätte ich nicht erwartet, ich dachte, er stößt mehrfach nacheinander gegen das Hinderniss weil beim Rückwärtsfahren die Taster wieder frei werden und sich der Ablauf dann wiederholt. Was passiert wenn du den asuro in der Hand hälst und die Tasten drückst? Vielleicht entstehen im Rückwartsgang mehr Störungen durch die niedrige MotorSpeed()? 80 erscheint mir sehr niedrig. Bringt eine zusätzliche PollSwitch()-Abfrage eine Änderung:
int t1, t2, t3;
...
t1= PollSwitch();
t2= PollSwitch();
t3= PollSwitch();
if(t1==t2 && t1==t3)...
Um beim Zurückfahren weiter als der Tastenhub zu kommen brauchst du eine Zeitverzögerung:
Häufige Kollisionen sind nicht gesund für den asuro. Wenn er beim Rückwärtsfahren dreht wird er die Linie verlieren?Code:... int i; // Zählvariable ... else { MotorDir(BREAK,BREAK); // Bremsen und 0,1 Sek. warten bis Stillstand for(i=0; i<100; i++) Sleep(72); // Sleep(72) dauert 1/1000 Sekunde MotorDir(RWD,RWD); // Eine Sekunde Zurücksetzen MotorSpeed(80,80); for(i=0; i<1000; i++) Sleep(72); MotorDir(BREAK,BREAK); // Bremsen und 0,1 Sek. warten for(i=0; i<100; i++) Sleep(72); } // else von if(t1==0) ...
Gruß
mic







Zitieren

Lesezeichen