Boscha
18.09.2008, 21:45
Hey Leute,
bin gerade dabei ein bisschen mit dem Folgen von Linien beschäftigt, habe auch ein "Programm" dafür geschrieben, dass irgendwie nicht das tut, was es soll...
Hier der Code :
#include "asuro.h"
int LinkSpeed = 200;
int RightSpeed = 200;
int ADOffset;
int i;
void LinksFahren(void)
{
LinkSpeed += 1;
RightSpeed -= 1;
}
void RechtsFahren(void)
{
RightSpeed += 1;
LinkSpeed -= 1;
}
int main(void)
{
unsigned int Data[2];
Init();
FrontLED(ON);
MotorDir(FWD,FWD);
MotorSpeed(LinkSpeed,RightSpeed);
LineData(Data);
ADOffset = Data[LEFT] - Data[RIGHT];
for(;;)
{
i = (Data[LEFT] - Data[RIGHT]) - ADOffset;
LineData(Data);
if(i < -4)
{
RechtsFahren();
BackLED(OFF, ON);
}
else if(i > 4)
{
LinksFahren();
BackLED(ON, OFF);
}
else
{
BackLED(OFF, OFF);
StatusLED(RED);
}
MotorSpeed(LinkSpeed,RightSpeed);
}
while(1)
return 0;
}
Ich weiß, da sind bestimmt einpaar Logik Fehler drinne, finde aber jetzt grad keine.
Das Fahren auf der Linie, wenn eine gefunden wurde, klappt irgendwie nicht richtig... (Der Asuro bleibt nicht auf der Linie).
Und was gibt LineData eig. zurück? Versteh das irgendwie nicht...
Hat jemand Fehler, Verbesserungstips oder sonstiges ?
Würde mich auf eine Antwort freuen :)
PS: Habe die Lib 2.8 .
PPS: Bin müde, also sorry, wenn ich alles irgendwie schlecht beschrieben habe... Morgen werd ich mir alles nochmal richtig angucken :)
MFG
bin gerade dabei ein bisschen mit dem Folgen von Linien beschäftigt, habe auch ein "Programm" dafür geschrieben, dass irgendwie nicht das tut, was es soll...
Hier der Code :
#include "asuro.h"
int LinkSpeed = 200;
int RightSpeed = 200;
int ADOffset;
int i;
void LinksFahren(void)
{
LinkSpeed += 1;
RightSpeed -= 1;
}
void RechtsFahren(void)
{
RightSpeed += 1;
LinkSpeed -= 1;
}
int main(void)
{
unsigned int Data[2];
Init();
FrontLED(ON);
MotorDir(FWD,FWD);
MotorSpeed(LinkSpeed,RightSpeed);
LineData(Data);
ADOffset = Data[LEFT] - Data[RIGHT];
for(;;)
{
i = (Data[LEFT] - Data[RIGHT]) - ADOffset;
LineData(Data);
if(i < -4)
{
RechtsFahren();
BackLED(OFF, ON);
}
else if(i > 4)
{
LinksFahren();
BackLED(ON, OFF);
}
else
{
BackLED(OFF, OFF);
StatusLED(RED);
}
MotorSpeed(LinkSpeed,RightSpeed);
}
while(1)
return 0;
}
Ich weiß, da sind bestimmt einpaar Logik Fehler drinne, finde aber jetzt grad keine.
Das Fahren auf der Linie, wenn eine gefunden wurde, klappt irgendwie nicht richtig... (Der Asuro bleibt nicht auf der Linie).
Und was gibt LineData eig. zurück? Versteh das irgendwie nicht...
Hat jemand Fehler, Verbesserungstips oder sonstiges ?
Würde mich auf eine Antwort freuen :)
PS: Habe die Lib 2.8 .
PPS: Bin müde, also sorry, wenn ich alles irgendwie schlecht beschrieben habe... Morgen werd ich mir alles nochmal richtig angucken :)
MFG