PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro - Linieverfolgung. Code-Probleme !



slycap
01.12.2011, 12:34
Hallo ans Forum,

habe den Asuro zusammengebaut. und möchte nun gern die Linienverfolgung programmieren.
Mein Programm sieht bisher so aus:

#include "asuro.h" /*Linienverfolgung*/
#define tol 15 /*Toleranz der Sensoren*/

int main(void)
{
unsigned int data[2]; /*Speicher bereitstellen*/
Init();

FrontLED(ON); /*Linienbeleuchtung einschalten*/
MotorDir(FWD,FWD); /*Beide Motoren auf vorwärts*/

while(1) /*Endlosschleife, ASURO soll beliebig lange der Linie folgen*/
{
LineData(data); /* aktuelle Helligkeitswerte der Fototransistoren einlesen*/
if (data [0] > data [1] + tol ) /*Rechtsausschlag*/
{
MotorSpeed(180,120);
MotorDir(FWD,FWD);
}
else if (data [1] > data [0] + tol ) /*Linksausschlag*/
{
MotorSpeed(120,180);
MotorDir(FWD,FWD);
}
else /*auf Linie fährt gerade aus!!!*/
{
MotorSpeed(160,160);
MotorDir(FWD,FWD);
}
}
return 0;
}

Gegen den Uhrzeigersinn fährt er gut, da er wenn er die Linie verliert eine linkskurve macht.
Problem ist wenn er im Uhrzeigersinn fährt, weil er sobald er die Linie verliert von der Linie weg wieder eine Linkskurve macht.
Habt ihr eine Idee wie ich es schaffen, dass er im Uhrzeigersinn eine Rechtskurve fährt?

================================================== ======
Irgendwie hat der Teil:
"else /*auf Linie fährt gerade aus!!!*/
{
MotorSpeed(160,160);
MotorDir(FWD,FWD);
}"

keinerlei Funktion, verstehe nur nicht warum????
================================================== ===================
Habt ihr eine Idee, wie man mit Hilfe des Hyperterminals die Werte für schwarze Linie und weißen Hintergrund anzeigen lassen kann?

Hoffe ihr könnt mir helfen. Wäre echt super.

Danke euch schon mal

grüße

P.S. wenn sonst jmd Verbesserungsvorschläge am Code hat, immer her damit^^

Kampi
01.12.2011, 12:46
Ich tippe mal das dieser Teil:

"else /*auf Linie fährt gerade aus!!!*/
{
MotorSpeed(160,160);
MotorDir(FWD,FWD);
}"

keine Funktion hat weil es "else if" heißen muss.
Zum Thema Terminal. Schau mal hier:

http://www.asurowiki.de/pmwiki/pub/html/print_8c.html

Vielleicht hilft dir das weiter. DU musst nur über RS232 die Werte für den Liniensensor ausgeben.