Hallo,
bin ganz neu auf dem Gebiet "Asuro". Derzeit arbeite ich für ein Schulprojekt an einem Asuro. Abgeben muss ich morgen
Leider klappt das Programm noch nicht 100%ig wie ich mir das Vorstelle.
Bislang habe ich nur fleißig im Forum gelesen, jedoch komm ich wirklich nicht weiter.
Der Roboter soll nur mit der asuro.h lib einer Linie folgen, einen Gegenstand bemerken und ausweichen, sowie bei ähnlichen Werten der Sensoren (gerade Linie oder normaler Untergrund) mithilfe der Odometrie geradeaus fahren.
Hier mein Quelltext:
Code:
//////////////////////////////////////////////////////////////////////////////////////
------------------aktuellste----------------------------------------------------------
//////////////////////////////////////////////////////////////////////////////////////
#include "asuro.h" //Sebastians ultra kram
int main(void)
{
unsigned int data[2];
unsigned int a,v;
unsigned char taste;
unsigned int ododata[2];
Init();
FrontLED(ON);
while(1){
if(PollSwitch()>0)
{
if(PollSwitch()>0)
{
a=0;
taste=PollSwitch();
if(taste==1)
{
while(a<=300)
{
a++;
Sleep(255);
MotorDir(RWD,RWD);
MotorSpeed(120,80);
}
do
{
LineData(data);
MotorDir(FWD,FWD);
MotorSpeed(80,80);
StatusLED(YELLOW);
BackLED(ON,ON);
}while((data[0]-6<data[1])&&(data[0]>data[1]-27));
//mögliche Änderung:}while((data[0]-15 < data[1])&&(data[0] > data[1]-45));
}
else if(taste==32)
{
while(a<=300)
{
a++;
Sleep(255);
MotorDir(RWD,RWD);
MotorSpeed(80,120);
}
do
{
LineData(data);
MotorDir(FWD,FWD);
MotorSpeed(80,80);
StatusLED(YELLOW);
BackLED(ON,ON);
}while((data[0]-6<data[1])&&(data[0]>data[1]-27));
//mögliche Änderung:}while((data[0]-15 < data[1])&&(data[0] > data[1]-45));
}
else if((taste>1)&&(taste!=32))
{
while(a<=300)
{
a++;
Sleep(255);
MotorDir(RWD,RWD);
MotorSpeed(160,80);
}
do
{
LineData(data);
MotorDir(FWD,FWD);
MotorSpeed(80,80);
StatusLED(YELLOW);
BackLED(ON,ON);
data[0];
data[1];
}while((data[0]-6<data[1])&&(data[0]>data[1]-27));
//mögliche Änderung:}while((data[0]-15 < data[1])&&(data[0] > data[1]-45));
}
}
}
else
{
LineData(data);
if((data[0]-5 > data[1])&&(data[0]-15 < data[1]))
{
MotorDir(FWD,FREE);
MotorSpeed(130,220);
StatusLED(RED);
BackLED(OFF,ON);
}
if(data[0]-15 > data[1])
{
MotorDir(FWD,FREE);
MotorSpeed(160,220);
StatusLED(RED);
BackLED(OFF,ON);
}
if((data[0] < data[1]-25)&&(data[0] > data[1]-45))
{
MotorDir(FREE,FWD);
MotorSpeed(220,130);
StatusLED(GREEN);
BackLED(ON,OFF);
}
if(data[0] < data[1]-45)
{
MotorDir(FREE,FWD);
MotorSpeed(220,160);
StatusLED(GREEN);
BackLED(ON,OFF);
}
if((data[0]-5 < data[1])&&(data[0] > data[1]-25))
{
v=120;
OdometrieData(ododata);
if(ododata[0]>=ododata[1])
{v=v+5;}
else
{v=v-5;}
MotorDir(FWD,FWD);
MotorSpeed(120,v);
StatusLED(YELLOW);
BackLED(ON,ON);
}
else;
}
}
return 0;
}
Was sagt ihr zu dem Quelltext?
Wo könnte der Fehler liegen?
Das "maken" udn flashen klappt., aber irgendwie bockt der Asuro. Aber spielt es auf, bzw. schaut es euch an
Freue mich auf euere Antworten.
Vielen dank schonmal!
Auch wenn man das Programm nicht optimal ist und es bessere gibt, wäre ich froh, wenn ich dieses Pagramm auf dem Asuro zum laufen bekäme. Das ist dann wenigstens das eigene
Gruß
Lesezeichen