Hallo Pinsel

Versuche es mal so:
Code:
#include "asuro.h"

#define SPEED  150

int speedLeft,speedRight;
unsigned int lineData[2];
int ADOffset;

void LineLeft (void)
{
   if (speedLeft < SPEED) speedLeft  += 1;
      else if (speedRight > 0) speedRight -= 1;
}

void LineRight (void)
{
   if (speedRight < SPEED) speedRight  += 1;
      else if (speedLeft > 0) speedLeft -= 1;
}

void LineDemo(void)
{
int i;
unsigned char j;

   Init();

   FrontLED(ON);
   for (j = 0; j < 255; j++) LineData(lineData);
   LineData(lineData);
   ADOffset = lineData[0] - lineData[1];
   speedLeft = speedRight = SPEED;
   for(;;) {
      LineData(lineData);
      i = (lineData[0] - lineData[1]) - ADOffset;
      if ( i > 4) {
         StatusLED(GREEN);
         LineLeft();
      }
      else if ( i < -4) {
         StatusLED(RED);
         LineRight();
      }
      else {
         StatusLED(OFF);
         speedLeft = speedRight = SPEED;
      }
      MotorSpeed(speedLeft,speedRight);
   }
}

int main(void)
{
  LineDemo();
  return 0;
}
for(;;) ist eine Endlosschleife. Beim Start sollten beide Sensoren etwa den selben Untergrund sehen (beide hell oder beide dunkel) damit der Offset (Empfindlichkeitsunterschied) halbwegs richtig ermittelt wird.

Gruß

mic