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:
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)
...
Häufige Kollisionen sind nicht gesund für den asuro. Wenn er beim Rückwärtsfahren dreht wird er die Linie verlieren?
Gruß
mic
Lesezeichen