Hallo
In der while(u==0)-Schleife sollten die Linienwerte neu eingelesen werden:
Code:
#include "asuro.h"
#include <stdio.h>
int main(void)
{
Init();
while(1)
{
FrontLED(1); //LED an
int lData[2]; // Speicher für die Messwerte zur Verfügung stellen
LineData(lData); // Einlesen der Messwerte
if (PollSwitch()==0) // wenn kein taster gedrückt
{
if (lData[1] > lData[0]) // Linienverfolgung
{
MotorDir(FWD,FWD);
MotorSpeed(150,225);
}
else if (lData[1] < lData[0])
{
MotorDir(FWD,FWD);
MotorSpeed(225,150);
}
}
else if(PollSwitch()!=0) //Kollisionsfall
{
int u=0;
while(u==0)
{
LineData(lData); // erneutes Einlesen der Messwerte !!!
if (lData[1] > 100 && lData[0]>100) //Linie gefunden?
{
MotorDir(FWD,RWD); //drehen
MotorSpeed(150,0);
u=0;
}
else
{
u=1;
}
}
}
}
return 0;
}
Besser, weil für den asuro schonender, wäre wohl die Ecke in der Linie zu suchen als immer mit Speed gegen ein Hinderniss zu knallen...
Gruß
mic
Lesezeichen