es geht um den farbig markierten teil am ende des codes. das problem ist, dass wenn das erste mal irgendeine der besagten tasten gedrückt wird, der asuro das macht was er soll. dh. er stößt vorne an, dadurch wird irgendeine der vorderen tasten gedrückt und er fährt ein stück zurück, dann weiter vorwärts. stößt er dann wieder vorne an, fährt er allerdings nicht mehr zurück. d.h. er bleibt irgendwie im code hängen oder so. woran könnte das liegen? danke schonmal!
Code:
#include "asuro.h"
#define FULL_L 210
#define FULL_R 210
void KurzzurueckunddannLinkskurve(void)
{
float endtime;
endtime = Gettime() + 1000;
while (Gettime() < endtime/2)
{
MotorDir(RWD,RWD);
MotorSpeed(FULL_L,FULL_R);
}
while (Gettime() > endtime/2 && Gettime() < endtime)
{
MotorDir(FWD,FWD);
MotorSpeed(FULL_L - 100, FULL_R);
}
}
void StarkeLinkskurve(void)
{
MotorDir(RWD,FWD);
MotorSpeed(10,FULL_R);
}
/*starke rechtskurve - zeitabhaengig (winkel fahren)*/
void StarkeRechtskurve(void)
{
MotorDir(FWD,FWD);
MotorSpeed(FULL_L,FULL_R - 100);
}
int main(void)
{
unsigned char t1, t2;
Init();
while (1)
{
t1 = PollSwitch();
t2 = PollSwitch();
if (t1 == 0 && t2 == 0) /* keine Taste */
{
StarkeRechtskurve(); /* vorwaerts fahren */
FrontLED(ON);
BackLED(OFF,OFF);
}
else if (t1 && t2 && t1 == t2) // irgendeine taste ist gedrueckt]
{
if (t1 & 0x02 || t2 & 0x10)
{
KurzzurueckunddannLinkskurve();
}
Msleep(1000); /* 1 Sekunde warten */
}
}
return 0;
}
Lesezeichen