hallo,
das programm soll eigentlich wie im titel beschrieben ablaufen...
funktioniert aber irgendwie nicht...

bitte werft mal´nen kurzen blick drauf, wo grob der fehler stecken könnte.

Danke!

Code:
#include "asuro.h"
#define SPEED 100
int speedLeft,speedRight;
unsigned int lineData[2];
int ADOffset;
unsigned char t1, t2;
void LineLeft (void)
{
  speedLeft  += 5;      /* links mehr Gas geben */
  speedRight -= 5;      /* rechts weniger Gas geben */
  if (speedLeft > 200) speedLeft = 200;
  if (speedRight < 60) speedRight = 60;
}
 
void LineRight (void)
{
  speedRight  += 5;     /* rechts mehr Gas geben */
  speedLeft   -= 5;     /* links weniger Gas geben */
  if (speedRight > 200) speedRight = 200;
  if (speedLeft < 60) speedLeft = 60;
}
void Dreh (void)
{
EncoderInit ();
StatusLED(RED);
MotorDir (BREAK,BREAK);
GoTurn (-20,  0, 100);
GoTurn (0  ,160, 100);
MotorDir (FWD,FWD);
speedLeft = speedRight = SPEED; 
}
void Kollision (void)
{
t1 = PollSwitch();
t2 = PollSwitch();
if (t1 == 0 && t2 == 0)         /* keine Taste */
{
StatusLED(YELLOW);
}
else
{
Dreh();
}
}
int main(void)
{
  int i;
 
  Init();
  FrontLED(ON);
  StatusLED(OFF);
  LineData(lineData);
  ADOffset = lineData[LEFT] - lineData[RIGHT];
  speedLeft = speedRight = SPEED;
  for (;;)
    MotorDir (FWD,FWD); 
 { 
 LineData(lineData);
    i = (lineData[LEFT] - lineData[RIGHT]) - ADOffset;
 
    if ( i >= 4)
    {
      BackLED(OFF,ON);
      LineLeft();
    }
    else if ( i <= -4)
    {
      BackLED(ON,OFF);
      LineRight();
    }
    else
    {
      BackLED(OFF,OFF);
      speedLeft = speedRight = SPEED;
    }
 
 MotorSpeed(speedLeft,speedRight);
 
 {
    Kollision();
 }
 
  }
}
bitte werft mal´nen kurzen blick drauf, wo grob der fehler stecken könnte.

Danke!