Hohenloher
17.03.2010, 19:54
Hey also ich hab ein Problem mit der Linienverfolgung zw mehrere:
1. der linke Fototransistor gibt nicht den gleichen Wet wie der rechte aus so dass der Asuro immer leicht bzw stärker im Kreis fährt
2. erkennt er somit auch keine Linien um diese zu verfolgen
3. kann es auf an dem Programm liegen wen ja was muss ich ändern das es besser funktioniert.
#include "asuro.h"
int main(void)
{
int a;
a=120; //Grundgeschwindigkeit
int b;
b=200; //Abiegegeschwindigkeit
int c; // Zählfunktion
c=0;
int d; // Rückfahrzeit
d=0;
int e; //Rechenzeit
e=10;
unsigned Data[2];
Init();
while(1)
{c++;
if (PollSwitch()>0)
{
if (PollSwitch()==32/*rechter Taster gedrückt*/) //Kollisionstaster
{
MotorSpeed(b/*links*/,0/*rechts*/);
StatusLED(RED)
;} //drehe nach rechts
else if (PollSwitch()==1)//linkter Taster gedrückt
{
MotorSpeed(0/*links*/,b/*rechts*/);
StatusLED(RED)
;} //drehe nach links
else if(PollSwitch()!=0>1<32)
{
for(d=0;d<100;d++)
{MotorDir(RWD,RWD);
MotorSpeed(b,b);
BackLED(ON,ON)
;}
;}
;}
else
{Init();
FrontLED(ON);
LineData(Data);
if(Data[0]<Data[1])
{MotorSpeed(a,b); /*Rechts*/
StatusLED(RED);}
else if (Data[0]>Data[1])
{MotorSpeed(b,a);
StatusLED(YELLOW);} /*Links*/
else if(Data[0]==Data[1])
{MotorSpeed (a,a);
StatusLED(GREEN);}
;}
;}
return(0);
}
Ich hoffe ihr könnt mir helfen.
Mit freundlichen Grüßen
Max
1. der linke Fototransistor gibt nicht den gleichen Wet wie der rechte aus so dass der Asuro immer leicht bzw stärker im Kreis fährt
2. erkennt er somit auch keine Linien um diese zu verfolgen
3. kann es auf an dem Programm liegen wen ja was muss ich ändern das es besser funktioniert.
#include "asuro.h"
int main(void)
{
int a;
a=120; //Grundgeschwindigkeit
int b;
b=200; //Abiegegeschwindigkeit
int c; // Zählfunktion
c=0;
int d; // Rückfahrzeit
d=0;
int e; //Rechenzeit
e=10;
unsigned Data[2];
Init();
while(1)
{c++;
if (PollSwitch()>0)
{
if (PollSwitch()==32/*rechter Taster gedrückt*/) //Kollisionstaster
{
MotorSpeed(b/*links*/,0/*rechts*/);
StatusLED(RED)
;} //drehe nach rechts
else if (PollSwitch()==1)//linkter Taster gedrückt
{
MotorSpeed(0/*links*/,b/*rechts*/);
StatusLED(RED)
;} //drehe nach links
else if(PollSwitch()!=0>1<32)
{
for(d=0;d<100;d++)
{MotorDir(RWD,RWD);
MotorSpeed(b,b);
BackLED(ON,ON)
;}
;}
;}
else
{Init();
FrontLED(ON);
LineData(Data);
if(Data[0]<Data[1])
{MotorSpeed(a,b); /*Rechts*/
StatusLED(RED);}
else if (Data[0]>Data[1])
{MotorSpeed(b,a);
StatusLED(YELLOW);} /*Links*/
else if(Data[0]==Data[1])
{MotorSpeed (a,a);
StatusLED(GREEN);}
;}
;}
return(0);
}
Ich hoffe ihr könnt mir helfen.
Mit freundlichen Grüßen
Max