Hi gandalfsz,
das Problem ist der Zähler, der nach 512 mal hochzählen die Routine zum Umdrehen einleitet. Außerdem würde ich noch ein paar Sachen anders machen. Schau mal hier und probiere damit weiter. Ist aber ohne Gewähr, da ungetestet:
Code:
#include "asuro.h"
int main(void) {
// zuerst die benötigten Variablen deklarieren...
unsigned int i; // ist in diesem Fall ausreichend und spart ein Byte
// IST ES NATÜRLICH NICHT, DA I WEITER ALS
// BIS 255 LÄUFT - also int ist schon OK
unsigned char t1, t2; //Tastenwerte es ist notwendig mindestens zweimal
//abzufragen, um Störungen zu eleminieren
Init ();
// OK, jetzt fahren wir los bis ein Hindernis kommt...
MotorSpeed (100,100);
MotorDir (FWD,FWD);
while(1)
{
// Abfragen, ob wir an ein Hindernis gestoßen sind:
t1 = PollSwitch();
t2 = PollSwitch(); // zur Sicherheit
if (t1 && t2 && (t1 == t2)) // Taster war beide Male gedrückt und der gleiche Wert kam zurück
{
// fahre ein Stück zurück
StatusLED (RED);
MotorDir (RWD,RWD);
for (i = 0; i < 282; i++)
{
Sleep (255);
}
// wenden
MotorDir (FWD,RWD);
for (i =0;i< 282;i++)
{
Sleep (255);
}
}
// und wieder vorwärts fahren
StatusLED (YELLOW);
MotorDir (FWD,FWD);
}// end while(1)
return 0;
}
Viel Spaß,
_HP_
Lesezeichen