okay also ich hab jetzt mal n programm geschrieben aber ich hab da n paar probleme also ich wollt dass mein asuro an der wand entlang fährt und in einer art wohnung also auch mit mehreren zimmern einen gegenstand sucht.
ich hab jez mithilfe von internet und beispielprogramme ein eigenes programm geschrieben aber er tut ned ganz was er soll...
ich hab mir des so gedacht:
wenn der boden weiß ist soll er einen bogen fahren, damit er mit dem taster rechts außen an der wand anstößt. dann dreht er sich ein stück auf der stelle um von der wand weg zu kommen und fährt wieder einen bogen bis zur wand sollte er sich mal zu weit drehen warum auch immer und stößt mit dem linken taster an der wand an dreht er sich wieder so dass er richtig rum steht. sobal der boden unter ihm schwarz wird oder er einen schwarzen gegenstand erreicht bleibt er stehen. dann sollen die backleds blinken und die statusled wechselt mehrfach die farbe (grün-gelb-grün-gelb...). und anschliesend könnte er noch über eine schwarze linie wieder nach draußen finden.
mein programm funktioniert allerdings nicht wirklich. wenn ich den asuro einschalte dann bleibt er stehen die vordere led leuchtet die backled rechts hinten leuchtet ebenfalls und die statusled leuchtet gelb. ich weis nicht woran es liegt
hier das programm:
Code:
#include <asuro.h>
#include <myasuro.h>
int main (void)
{
int anzahlwiederholungen=0, i=6;
int ldata[2];
unsigned int data[2]
;unsigned char t1, t2; <- ich weis nicht warum aber ohne das ";" am anfang wurde mir ein error angezeigt
Init();
FrontLED(ON);
LineData(ldata);
if(ldata[0]>125,ldata[1]>125)
{
while (1)
{
t1 = PollSwitch();
t2 = PollSwitch();
if (t1 == 0 && t2 == 0) /* keine Taste */
{
MotorDir(FWD,FWD); /* Rechtsbogen fahren */
MotorSpeed(150,120);
/* FrontLED(ON);
BackLED(OFF,OFF);*/
}
else if (t1 && t2 && t1 == t2)
{
MotorDir(BREAK,BREAK);
if (t1 & 0x07) /* Tasten links gedrückt? */
{
MotorDir(RWD,RWD); /* auf der Stelle umdrehen */
MotorSpeed(150,150);
/*FrontLED(OFF);
BackLED(ON,OFF);*/
}
if (t1 & 0x38 ) /* Tasten rechts gedrückt? */
{
MotorDir(FWD,FWD); /* Vorwärts Linkskurve */
MotorSpeed(100,150);
/* FrontLED(OFF);
BackLED(OFF,ON);*/
}
Msleep(1000); /* 1 Sekunde fahren */
}
}
}
else if(ldata[0]<125,ldata[1]<125)
{
while (anzahlwiederholungen<i)
{
MotorDir(BREAK,BREAK);
MotorSpeed(BREAK,BREAK);
StatusLED(GREEN);
BackLED(ON,OFF);
StatusLED(YELLOW);
BackLED(OFF,ON);
anzahlwiederholungen++;
}
}
else if(ldata[0]>ldata[1])
{
MotorDir(FWD,FWD);
MotorSpeed(175,125);
}
else if(ldata[0]<ldata[1])
{
MotorDir(FWD,FWD);
MotorSpeed(125,175);
}
return 0;
}
weis jemand wo der fehler liegen könnte? ich komm irgendwie nicht weiter...
Lesezeichen