Also wirklich erklären kann ich das auch nicht:

Code:
#include "RP6RobotBaseLib.h"							//bindet die RP6RobotBaseLib.h ein

int main (void)
{
	initRobotBase();										//initialsiert den Robby
	powerON();												//aktiviert die Encoder usw.
//fragt alle 50ms die Bumper ab und speichert den Wert in "bumper_left" und "bumper_right"
	task_Bumpers();

	while(1)
	{
		if(bumper_left != false)						//wenn linker bumper betätigt...
		{
			setLEDs(0b111111);							//schalte SL4, SL5 und SL6 ein
			//moveAtSpeed(0,0);								//Stop
			//stop();
			//powerOFF(); // abwürg
	// folgender Code ist aus emergencyShutdown(0);
	mleft_power = 0; // aktuelle Power
	mright_power = 0;
	OCR1AL = 0; // PWM auf null
	OCR1BL = 0;
			setLEDs(0b011111);							//schalte  SL6 aus
			//while(!isMovementComplete())        	// Weiterfahren bis Antriebe auf null
				//task_RP6System();
			mSleep(1500);									//1,5 Sekunden warten
			//powerON(); // und weiter

			setLEDs(0b011011);							//schalte SL4 SL5 ein
			move(60,BWD,DIST_MM(300),NON_BLOCKING);	//fahre 30cm Rückwärts
			while(!isMovementComplete())        	// Weiterfahren bis Ziel erreicht
				task_RP6System();
			mSleep(800);									//... für 0,8 Sekunden

			setLEDs(0b001001);							//schalte SL4 ein
			rotate(60,RIGHT,180,NON_BLOCKING);		//um 180° nach Rechts drehen
			while(!isMovementComplete())        	// Weiterfahren bis Drehung fertig
				task_RP6System();
		}
		else
		{
			setLEDs(0b000000);							//schalte alle LEDs aus
			changeDirection(FWD);						//Motor Drehrichtung auf Vorwärts setzen
			moveAtSpeed(80,80);							//Fahre Vorwärts bis Bumper gedrückt wird
		}
		task_RP6System(); //fragt immer wieder die Encoder, ACS, Bumpers und Motorfunktionen ab
	}
	return 0;
}
(getestet)