Hi sebär,
wenn du immer abwechseln mal 90° und 180° drehen möchtest, benötigst du eine Variable, die einfach nur hochzählt, wenn du ein Hindernis findest und drehen willst/musst.
Ist der Wert gerade, dann 180°, sonst 90°.
Such mal im angepassten Code nach 'zaehler'.
Das "if (zaehler & 0b00000001)" prüft nur, ob das letzte Bit in der Variablen gesetzt ist. Das reicht aus um entscheiden zu können ob die Zahl gerade oder ungerade ist.Code:#include "asuro.h" #define FULL_L 240 #define FULL_R 220 void Fahren (void) /* Vorwärts fahren */ { StatusLED (GREEN); BackLED (OFF, OFF); MotorDir (FWD, FWD); MotorSpeed (FULL_L, FULL_R); } void Zurueck (void) /* Zurück fahren */ { StatusLED (YELLOW); BackLED (ON, ON); MotorDir (RWD, RWD); MotorSpeed (FULL_L, FULL_R); } void KurveLR (void) /* Kurve rückwärts Links */ { StatusLED (YELLOW); BackLED (ON, OFF); MotorDir (RWD, RWD); MotorSpeed (FULL_L, 0); } void KurveRR (void) /* Kurve rückwärts Rechts */ { StatusLED (YELLOW); BackLED (OFF, ON); MotorDir (RWD, RWD); MotorSpeed (0, FULL_R); } void Anhalten (void) /* Anhalten */ { StatusLED (RED); BackLED (OFF, OFF); MotorSpeed (0 ,0); } int main (void) { unsigned char zaehler = 0; Init (); switched = 0; StartSwitch (); while (1) { if (switched == 1) { zaehler++; Anhalten (); Msleep (250); Zurueck (); Msleep (250); Anhalten (); Msleep (250); KurveRR (); if (zaehler & 0b00000001) Msleep (1000); else Msleep (2000); Anhalten (); Msleep (250); switched = 0; StartSwitch (); } else Fahren (); } return 0; }
Du brauchst auch keine Angst vor dem "zaehler++" zu haben. Damit wird nur folgendes gemacht "zaehler = zaehler + 1;"
Und wenn der Wert in zaehler von 255 nochmal um eins erhoeht wird, dann passiert in C kein Fehler, obwohl der Wert ja eigentlich auf 256 gehen will, die Variable aber nur von 0 bis 255 geht.
Der Wert wird einfach wieder auf 0 gesetzt und schon geht es weiter.
Viel Erfolg und
Gruß Sternthaler
P.S.: Wenn du demnächst selber wieder Programmcode posten möchtest, schreib bitte ein [ code ] vorher und hinterher ein [ /code ]
ABER OHNE die Leerzeichen in den Klammern.
Dann bekommst du auch so ein schönes Kästchen wie hier gerade, und die Formatierung bleibt erhalten.







Zitieren

Lesezeichen