Code:
#include "asuro.h"
	

int main(void) {
	Init ();

	int cm90=16.5;
	int s1=10;
	int s2=20;
	int i, t;
	
#define vor {while (encoder[LEFT]<=s2*3){MotorDir(FWD,FWD);MotorSpeed(160,160);}};
#define zurück {while (encoder[LEFT]<=s1*3){MotorDir(RWD,RWD);MotorSpeed(160,160);}};
#define links {while (encoder[LEFT]<=cm90*3){MotorDir(FWD,FWD);MotorSpeed(0,160);}};
#define rechts {while (encoder[LEFT]<=cm90*3){MotorDir(FWD,FWD);MotorSpeed(160,0);}};
	
	while (1)
	{
		for(i=0;i<10;i++)
		{
			PollSwitch();
		} 
		t=PollSwitch();
		Encoder_Init();
		if (t>=1) {
			
			zurück;
			links;
			vor;
			rechts;
			vor;
			rechts;
			vor;		
		} else {
			MotorDir(FWD,FWD);
			MotorSpeed (160,160);
		}
	}
	return 0;
}
ich hab jetzt par sachen umgeschrieben, damit es kompakter aussieht.


Hm... und s1 und s2 sollte für die strecken zählen

werden die encoder werte beim nächsten encoder[LINKS] zurückgesetzt? wenn ja, dann hab ich meinen fehler gefunden