Hallo
Großes Lob, weil dein Programm fehler- und warnungsfrei übersetzt werden kann. Großer Tadel: Wo sind die Kommentare?
Ich habe dein Programm nochmals umformatiert:
PHP-Code:
#include "asuro.h"
#include "myasuro.h"
int main(void)
{
unsigned int odata[2];
unsigned int ldata[2];
int a;
int b;
int c;
int d;
int e;
int f;
Init();
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);
}
Man sieht nun deutlich die extreme Verschachtelung und die Wiederholungen der einzelnen Programmteile. Vielleicht solltest du mal den Ablauf analysieren:
Folge_Line_bis_Becher_erkannt_wird();
Schliesse_Greifer();
Links_oder_Rechts_abbiegen();
Folge_Line_bis_Becher_erkannt_wird();
Öffne_Greifer();
Das sollte es im Wesentlichen sein. Es soll wohl sowas werden:
btw: return in main() beendet das Programm sofort!!!
Gruß
mic
Lesezeichen