Du kannst die Reibung detektieren, um eine Kollision festzustellen ( auch nach hinten ).

Code:
#include "asuro.h"  // bitte die neue Datei benutzen
                    // asuro.h und asuro.c vom 31.03.05

#define aus MotorDir(BREAK,BREAK)
#define go {MotorSpeed(150,150);MotorDir(FWD,FWD);}
#define backturn { MotorSpeed(150,250);MotorDir(RWD,RWD);Msleep(1000);}

/*************************************************************************************

  ASURO discovers your apartment

  program made by stochri july, 2005

*************************************************************************************/

int speed()
{
   int rightspeed,leftspeed;
   int leftold,rightold;

   Encoder_Set(0,0);      // reset encoder


   leftold=encoder[LEFT];
   rightold=encoder[RIGHT];
   Msleep(300);
   leftspeed=encoder[LEFT]-leftold;
   rightspeed=encoder[RIGHT]-rightold;

   //SerWrite("  speed Left,Right ",19);
   //PrintInt(leftspeed);
   //PrintInt(rightspeed);
   return leftspeed+rightspeed;
}

int main(void)
{
   int n,v,nullspeed;

   Init();
   Encoder_Init();
   StatusLED(OFF);
   SerWrite("\n\rASURO OK\n\r",8);

   go;
   Msleep(500);

   nullspeed=speed()-10;

   while(1)
   {
      v=speed();
      SerWrite("\n\r speed ",9);
      PrintInt(v);

      if(v<nullspeed)
      {
         backturn;
         go;
         Msleep(500);
      }

   }
   return 0;
}