Asuro steigt nicht aus while schleife aus
Hallo,
Ich habe ein kurzes Programm geschrieben, mir dem der Asuro einer Linie folgen soll und bei Kollision stoppen. Das mit dem Linie verfolgen klappt Prima nur nicht mit dem stoppen und anschließendem BackLed aufleuchten. Hier ist mein Programm:
Code:
#include "asuro.h"
#include "myasuro.h"
int main(void)
{
unsigned int ldata[2];
Init();
int a;
FrontLED(ON);
MotorDir(FWD,FWD);
a=1;
while(a)
{
LineData(ldata);
if (ldata [0] > ldata [1])
{
MotorSpeed(200,100);
}
else if (PollSwitch()>0)
{
a=0;
}
else
{
MotorSpeed(100,200);
}
}
return(0);
BackLED(ON,ON);
}
Hier noch ein paar Daten: Ich programiere mit AVR_Studio mit der AsuroLib-v280rc1 auf C für einen Atmega 8
Also wie schon gesagt das mit der Linienverfolgung klappt nur er hält nicht an bei kollosion, while(a=1) wird also nicht a=0.
Weiß irgendwer was ich ändern muss, dass er stehen bleibt?
Vielen Dank
Liste der Anhänge anzeigen (Anzahl: 1)
Anhang 19081
ok gut, aber wie müsste es denn aussehen, wenn ich a beibehalten soll also a schon auf 0 gesetzt werden muss?? Denn mei eigentliches Programm sieht so aus: Er soll einer Linie folgen, bei Kollision einen Becher (Servo über Backled angeschlossen) heben, ich untersuchen ob schwarz oder weiß (Odometiesensor nach vorn gelegt) nach links oder Rechts fahren je nachdem welche Farbe, linie Folgen bis Kollision nochmals drehen und auf ursprüngliche Linie fahren.
Code:
#include "asuro.h"
#include "myasuro.h"
int main(void)
{
unsigned int odata[2];
unsigned int ldata[2];
Init();
int a;
int b;
int c;
int d;
int e;
int f;
FrontLED(ON);
while(1)
{
MotorDir(FWD,FWD);
a=1;
c=1;
d=1;
while(a)
{
LineData(ldata);
if (ldata [0] > ldata [1])
{
MotorSpeed(200,100);
}
else if (PollSwitch()>0)
{
a=0;
}
else
{
MotorSpeed(100,200);
}
}
return(0);
for (b=0; b<40; b++)
{
BackLED(OFF,ON);
Msleep(1);
BackLED(OFF,OFF);
Msleep(19);
}
}
{
OdometrieData(odata);
if (odata[0] > 500)
{
{
MotorSpeed(0,200);
Msleep(1000);
MotorSpeed(200,200);
}
while(c)
{
LineData(ldata);
if (ldata [0] > ldata [1])
{
MotorSpeed(200,100);
}
else if (PollSwitch()>0)
{
c=0;
for (f=0; f<40; f++)
{
BackLED(OFF,ON);
Msleep(2);
BackLED(OFF,OFF);
Msleep(18);
}
}
else
{
MotorSpeed(100,200);
}
}
return(0);
}
{
MotorSpeed(100,200);
Msleep(1000);
MotorSpeed(200,200);
}
OdometrieData(odata);
if (odata[0] < 500)
{
{
MotorSpeed(200,0);
Msleep(1000);
MotorSpeed(200,200);
}
while(d)
{
LineData(ldata);
if (ldata [0] > ldata [1])
{
MotorSpeed(200,100);
}
else if (PollSwitch()>0)
{
d=0;
for (e=0; e<40; e++)
{
BackLED(OFF,ON);
Msleep(2);
BackLED(OFF,OFF);
Msleep(18);
}
}
else
{
MotorSpeed(100,200);
}
}
return(0);
}
{
MotorSpeed(100,200);
Msleep(1000);
MotorSpeed(200,200);
}
}
return(0);
}
Liste der Anhänge anzeigen (Anzahl: 3)
Hier noch ein paar Bilder, ich entschuldige mich gleich für die Qualität, aber bei meiner Internetverbindung muss ich es soweit runterrechnen wie es geht.Anhang 19086Anhang 19087Anhang 19088
Liste der Anhänge anzeigen (Anzahl: 1)
Blöderweise habe ich keinen Facebook-Acount...