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'.
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;
}
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.
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.
Lesezeichen