Hi,

Code:
//----------------------------------------------------------------------------------
//Projekt: HAUS VOM NIKOLAUS
//----------------------------------------------------------------------------------
#include "asuro.h"
#define TRIGGERLEVEL 680
#define HYSTERESIS 30
#define LOW 0
#define HIGH 1

//----------------------------------------------------------------------------------
//Variablen deklarieren
//----------------------------------------------------------------------------------
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;

//----------------------------------------------------------------------------------
//Unterprogramm Odometrie
//----------------------------------------------------------------------------------
void Odometrie (void)
{
      //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);
}

//----------------------------------------------------------------------------------
//Unterprogramm Haus (Quadrat, Kantenlänge 29cm)
//----------------------------------------------------------------------------------
void Haus(void)
{
    //Schleife (wird 4mal ausgeführt), da 4 Seiten
    while (zaehler<4)
    {
         
    switch(distance)
   {
        //Hausseite
        case 0:      MotorDir(FWD,FWD);
               MotorSpeed(speed,speed);
               break;
        case 110:   speed=200;
               break;
        case 120:   speed=150;
               break;
        //Drehung nach links, 90°
        case 145:   MotorDir(BREAK,BREAK);
                  for (i=0; i<100; i++)
                     {
                     Sleep(255);
                     }
               MotorDir(RWD,FWD);
               speed=255;
               distance=146;
               break;
        case 176:    speed=200;
               break;
       case 182:    speed=150;
               break;
      //stehen bleiben und kurz warten
       case 186:    MotorDir(BREAK,BREAK);
                  for (i=0; i<100; i++)
                     {
                     Sleep(255);
                     }
               MotorDir(FWD,FWD);
               speed=255;
               //zurück zum Anfang
               distance=0;
               
               //Schleifenzähler
               zaehler++;
               break;
        }
      
      Odometrie();
                             
    }   
   //stehen bleiben, nachdem ASURO ein Quadrat gefahren ist
   MotorDir(BREAK,BREAK);
}

//--------------------------------------------------------------------------------
//Unterprogramm Dach1 (Diagonale 1, 41cm; Dach Seite 1, 19cm)
//--------------------------------------------------------------------------------
void Dach1(void)
{
while(distance<364){   
switch(distance)
   {
   
   //Drehung nach links, 45°
   case 0:    MotorDir(RWD,FWD);
            MotorSpeed(speed,speed);
            distance=1;
            break;
                  
    case 10:    speed=200;
            break;
   case 15:    speed=150;
            break;
   //Diagonale 1
   case 21:    MotorDir(BREAK,BREAK);
               for (i=0; i<100; i++)
                  {
                  Sleep(255);
                  }
            MotorDir(FWD,FWD);
            MotorSpeed(speed,speed);
            break;
   case 190:   speed=200;
            break;
   case 200:   speed=150;
            break;
   //Drehung nach rechts, 95°
   case 227:   MotorDir(BREAK,BREAK);
               for (i=0; i<100; i++)
                  {
                  Sleep(255);
                  }
            MotorDir(FWD,RWD);
            speed=255;
            distance=228;
            break;
   case 248:   speed=200;
            break;
   case 258:   speed=150;
            break;
   //Dach Seite 1, linke Seite
   case 268:   MotorDir(BREAK,BREAK);
               for (i=0; i<100; i++)
                  {
                  Sleep(255);
                  }
            MotorDir(FWD,FWD);
            speed=255;
            distance=269;
            break;
   case 340:   speed=200;
            break;
   case 350:   speed=150;
            break;
   case 363:   MotorDir(BREAK,BREAK);
               distance++;for (i=0; i<100; i++)
               {
               Sleep(255);
               }
            break;
   }
   
   Odometrie();
} }  

//---------------------------------------------------------------------------------
//Unterprogramm Dach2 (Diagonale 2, 41cm; Dach Seite 2, 19cm)
//---------------------------------------------------------------------------------
void Dach2(void)
{while(distance<378){
   switch(distance)
   {
   //Drehung nach rechts, 80°
   case 0:    MotorDir(RWD,FWD);
            MotorSpeed(speed,speed);
            distance=1;
            break;               
    case 25:    speed=200;
            break;
   case 30:    speed=150;
            break;
   //Dach Seite 2, rechte Seite
   case 37:    MotorDir(BREAK,BREAK);
               for (i=0; i<100; i++)
                  {
                  Sleep(255);
                  }
            MotorDir(FWD,FWD);
            MotorSpeed(speed,speed);
            break;
   case 110:   speed=200;
            break;
   case 120:   speed=150;
            break;
   //Drehung nach rechts, 95°
   case 131:   MotorDir(BREAK,BREAK);
            for (i=0; i<100; i++)
               {
               Sleep(255);
               }
            MotorDir(FWD,RWD);
            speed=255;
            distance=132;
            break;
   case 150:   speed=200;
            break;
   case 160:   speed=150;
            break;
   //Diagonale 2
   case 171:   MotorDir(BREAK,BREAK);
            for (i=0; i<100; i++)
               {
               Sleep(255);
               }
            MotorDir(FWD,FWD);
            speed=255;
            distance=172;
            break;
   case 340:   speed=200;
            break;
   case 350:   speed=150;
            break;
   case 377:   MotorDir(BREAK,BREAK);
               distance++;for (i=0; i<100; i++)
               {
               Sleep(255);
               }
            break;
   }
   
   Odometrie();
}}

//-----------------------------------------------------------------------------------
//Hauptprogramm
//-----------------------------------------------------------------------------------
int main (void)
{
Init();

   MotorDir(FWD,FWD);
   BackLED(OFF,OFF);
   StatusLED(OFF);

   Haus();
distance=0;
   StatusLED(RED);
   Dach1();
distance=0;
   StatusLED(GREEN);
   Dach2();
   StatusLED(YELLOW);
}
könnte klappen, klammern, return0 etc habe ich nicht überprüft. weiß auch nicht mehr genau wie das aussehen muss
mfg jeffrey

ps: hab mal ne frage, du sagst du benötigst den asuro bei der arbeit, welche firma braucht nen suro, der das haus vom nikolaus malt? und was mich noch mehr interessiert, für was brauchen die den?