-
hab meinen Asuro jetzt wie folgt programmiert:
#include "asuro.h"
Code:
int main(void)
{ int a;
Init();
while(1)
{
MotorDir(FWD,FWD);
MotorSpeed(200,200);
StatusLED(GREEN);
while (PollSwitch()==0)//fahren bis kollision
{
MotorSpeed(0,0); //bei kollision, motoren abstellen
StatusLED(YELLOW);//nachdenken was passiert ist:
unsigned char taste;
taste = PollSwitch();
if (taste == 32 || taste == 48) //links kollidiert
{
MotorDir(BREAK,RWD);
MotorSpeed(0,120);
for(a=0;a<500;a++)
{Sleep(72);}//ca. eine ms
} //sollte ca 0.5sec "Pause" sein
else if (taste == 16 || taste == 8 || taste == 4 || taste == 2 || taste == 18) //einige Frontalkollisionen
{
MotorDir(RWD,RWD);
MotorSpeed(120,120);
for(a=0;a<500;a++)
{Sleep(72);}
MotorDir(RWD,FWD);
for(a=0;a<500;a++)
{Sleep(72);}}
else if (taste == 1 || taste == 3)//rechts kollidiert
{
MotorDir(RWD,BREAK);
MotorSpeed(120,0);
for(a=0;a<500;a++)
{Sleep(72);}}
else//unbekanntes kollisionsmuster
{
while(1)
{StatusLED(RED);
BackLED(ON,OFF);
Sleep(100);
BackLED(OFF,ON);
for(a=0;a<500;a++)
{Sleep(72);}}
}
}
}//nach dem "Ausweichen" wieder fahren
return 0;
}
(alt+c)
wenn ich ichn jetzt einschalte leuchten wieder meine BackLED und meine StatusLED rot und mehr macht das gute stück dann nicht mehr...
-
hi
du hast in die while schleife while (PollSwitch()==0)
du hättest aber schreiben müssen : while (PollSwitch()!=0)
denn nun hast du "befohlen", dass der asuro ausweicht, wenn kein schalter gedrückt ist.
Ich denke wenn du das änderst müsste es eig funktionieren.
MfG
Jan