Hallo unser Projekt ist eigentlich soweit fertig allerdings macht unser ASURO jetzt nur noch Rückwärts Linkskurven am Stück. Bis wir dass Programm erweitert haben ging jedoch die Funktion mit den Kollisionstaster hervorragend.



Zur Erklärung er ASURO soll eine Kurve fahren, an die er im ersten Durchgang anstößt...im zweiten Durchgang soll er sie perfekt nehmen...
Dazu zählt er Linien bis er eine kurve erkennt und speichert diesen Wert ab. Beim nächsten Durchlauf macht er nach der abgespeicherten Anzahl an Linien eine Kurve.

Könnt ihr Erklären warum er jetzt plötzlich nur noch Rückwärtslinkskurven macht?

Vielen Dank

Lg
Hansebanger vs. Bangboy
Code:
#include "asuro.h"
void SleepEx(short);
#define STOP 250
int main(void)
{

unsigned char taste;
unsigned int data[2];
int i,S,DrehR,DrehL;

Init();
DrehL=0;					// Werte auf null setzen 
DrehR=0;					
i=0;
S=0;

while (1==1)
{
FrontLED(ON);
BackLED(OFF,OFF);
MotorDir(FWD,FWD);
MotorSpeed(150,150);
LineData(data);

if ((data[0]<STOP) && (data[1]<STOP))
{
i++;
BackLED(ON,ON);
SleepEx(1);
}

if (i>10) 
{
MotorSpeed(0,0);
SleepEx(15);
S=1;
i=0;

}


taste=PollSwitch();
	
	if (taste > 13) 
		{
		DrehR=i;
		MotorSpeed(0,0);
		StatusLED(RED);
		MotorDir(RWD,RWD);
		MotorSpeed(0,200);
		SleepEx(15);
		MotorSpeed(0,0);
		SleepEx(10);
		MotorDir(FWD,FWD);
		MotorSpeed(210,200);
		}
	else if((taste < 13) && (taste >= 1) ) 
		{
		DrehL=i;
		MotorSpeed(0,0);
		StatusLED(YELLOW);
		MotorDir(RWD,RWD);
		MotorSpeed(200,0);
		SleepEx(15);
		MotorSpeed(0,0);           
		SleepEx(10);
		MotorDir(FWD,FWD);
		MotorSpeed(210,200);
		}



if (S=1) 
{ 

while (i<(DrehL))
{
 MotorDir(FWD,FWD);
 MotorSpeed(105,100);

}

if (i>=(DrehL))
{
  MotorDir(FWD,FWD);
  MotorSpeed(120,20);
  StatusLED(GREEN);
}

}

}










//**************************************************************************************
}

void SleepEx(short zsecnds)
{
	int wdhlg=zsecnds/.03; 
	int i=0; 
	while (i<wdhlg)
	{
		Sleep(216); 
		i++; 
	}
}