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:
Viel Spaß,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; }
_HP_







Zitieren

Lesezeichen