hi, wo genau in der switch anweisung ist denn die ecke?also welche anweisung führt die 90° drehung aus?

edit: hab´s gefunden, wer lesen kann ist klar im vorteil

probier mal den code:

Code:
#include "asuro.h"
//Schwellwert für die Hell/Dunkel-Unterscheidung
//Eventuell muss damit etwas variiert werden
#define TRIGGERLEVEL 680
#define HYSTERESIS 30
#define LOW 0
#define HIGH 1


int main(void)
{
   unsigned int data [2];
   signed int status [2]={0,0};
   unsigned int speed=255;
   //Startwert für halbe Motorgeschwindigkeit
   signed int difference=0;
   unsigned int distance=0;
   int i;
   int zaehler=0;
   
   Init();
   MotorDir(FWD,FWD);
   BackLED(OFF,OFF);
   
   while (zaehler<4)
   {
         
      switch(distance) {
         
         //Am Anfang der Strecke Vollgas
         case 0:MotorDir(FWD,FWD);
         MotorSpeed(speed,speed);
         break;
         //Am Ende langsamer werden...
         case 215:speed=200;
         break;
         case 230:speed=150;
         break;
         //...und stehen bleiben
         case 251:MotorDir(BREAK,BREAK);
            //etwas warten, bis der Roboter wirklich steht
            for (i=0; i<100; i++)
            {
            Sleep(255); }
            //auf der Stelle nach links drehen
            MotorDir(RWD,FWD);
            speed=255;
            //und noch vermeiden, dass die Verzögerung
            //mehrmals aufgerufen wird
            distance=252;
zaehler++;            
break;
         case 282: speed=200;
         break;
         case 288: speed=150;
         break;
         case 292: MotorDir(BREAK,BREAK);
            for (i=0; i<100; i++)
            {
            Sleep(255); }
            
            MotorDir(FWD,FWD);
            speed=255;
            distance=0;
            //und noch vermeiden, dass die Verzögerung
            //mehrmals aufgerufen wird
            
            break;
            }
                                 
               
         //Helligkeitswerte der Lichtschranken auslesen
         OdometrieData(data);
      
         //Wechsel linker Sensor von niedrig auf hoch?
         if((status[0]==LOW)&&(data[0]>TRIGGERLEVEL+HYSTERESIS)) {
            status[0]=HIGH;
            difference++;
            distance++; }
         //Wechsel linker Sensor von hoch auf niedrig?
         if((status[0]==HIGH)&&(data[0]<TRIGGERLEVEL-HYSTERESIS)) {
            status[0]=LOW;
            difference++;
            distance++; }
         
         //Wechsel rechter Sensor von niedrig auf hoch?
         if((status[1]==LOW)&&(data[1]>TRIGGERLEVEL+HYSTERESIS)) {
            status[1]=HIGH;
            difference--; }
         
         //Wechsel rechter Sensor von hoch auf niedrig?
         if((status[1]==HIGH)&&(data[1]<TRIGGERLEVEL-HYSTERESIS)) {
            status[1]=LOW;
            difference--; }
         
         
         //zur Sicherheit: verhindern, dass der Differenzzähler den erlaubten
         //Wertebereich verlässt
         if(difference<-155) difference=-155;
         if(difference>155) difference=155;
         
         //StatusLED noch entsprechend der erkannten Segmente aufleuchten
         //lassen, grün für links, rot für rechts
         StatusLED(status[0]+status[1]*2);
      
         //Zähldifferenz passemd auf die Motoren verteilen
         if(difference>0) MotorSpeed(155-difference,155);
         else MotorSpeed(155,155+difference);
         
      }
   
   return 0;
}
mfg jeffrey