Damit der Code funktioniert brauchst du noch die Ultraschall Bibliothek.
lege den „NewPing“ Ordner in den  „libraries\“ Ordner.

Hier kannst du den Code herunterladen:

//Weil wir einen Servo und einen Ultraschall-Sensor benutzen, fügen wir zwei Bibliotheken ein, die deren Benutzung vereinfachen.
#include <Servo.h>
#include <NewPing.h>

//damit wir uns nicht die Nummern der Pin's merken müssen, geben wir ihnen Namen, an denen wir die  Pinfunktion erkennen.
#define LeftMotorForward 6
#define LeftMotorBackward 5
#define RightMotorForward 8
#define RightMotorBackward 9
#define USTrigger 3
#define USEcho 2
#define MaxDistance 100
#define LED 13

//Hier erstellen wir zwei 'objekte', eine für den Servo und eine für den Ultraschall-Sensor
Servo servo;
NewPing sonar(USTrigger, USEcho, MaxDistance);

//Hier erstellen wir Variablen für Zahlen ohne Vorzeichen, welche wir weiter unten im Code brauchen für Messwerte, Geschwindigkeit etc.
unsigned int duration;
unsigned int distance;
unsigned int FrontDistance;
unsigned int LeftDistance;
unsigned int RightDistance;
unsigned int Time;

void setup()                                            //Dieser Abschnitt läuft nur einmahl beim Programmstart
{
  //Serial.begin(115200);                               //damit wir zum Fehler suchen eine Serielle verbindung haben
  
  //Hier definieren wir die Pin Modus. Weil wir Signale ausgeben werden, stellen wir sie als Ausgänge
  pinMode(LeftMotorForward, OUTPUT);
  pinMode(LeftMotorBackward, OUTPUT);
  pinMode(RightMotorForward, OUTPUT);
  pinMode(RightMotorBackward, OUTPUT);
  pinMode(LED, OUTPUT);
  servo.attach(4);                                    //Der Servo hängt an pin 4
}

void loop()                                           //Dieser Abschnitt widerholt sich selber währen der Arduino eingeschaltet ist.
{
  
  servo.write(90);                                    //Der  Servo schaut vorwärts     
  delay(500);             
  scan();                                             //ruft die Scan Funktion auf
  FrontDistance = distance;                           //Setzt die Variable FrontDistance auf den Wert, den wir von der Scan Funktion bekommen haben
  if(FrontDistance > 40 || FrontDistance == 0)        //falls 40cm vor dem Roboter nichts ist, dann..
  {
   moveForward();                                     //rufe die moveForward Funktion auf
  } 
  else                                                //andernfalls (allso falls etwas kommt innert 40cm ) dann...
  {
    moveStop();                                       //rufe die moveStop Funktion
    servo.write(167);                                 //Drehe den Servo nach links (möglicherweise kann der kleine Servo nicht die ganzen 180Grad)
    delay(500);                                       //Warte eine halbe Sekunde, bis der Servo links ankommt
    scan();                                           //Rufe die scan Funktion
    LeftDistance = distance;                          //Setze die Variable LeftDistance auf die Distanz von links
    servo.write(0);                                   //Drehe den Servo nach rechhts
    delay(500);                                       //Warte eine halbe Sekunde, bis der Servo rechts ankommt
    scan();                                           //Rufe die scan Funktion auf
    RightDistance = distance;                         //Setze die Variable RightDistance auf die Distanz von rechts
    if(RightDistance < LeftDistance)                  //Ist die Distanz rechts kleiner als der linke Abstand..
    {
     moveLeft();                                      //Rufe die moveLeft Funktion auf
     delay(500);                                      //Pausiere das Programm eine halbe Sekunde, bis der Roboter gedreht hat
    }
    else if(LeftDistance < RightDistance)             //Andernfalls, wenn die Distanz links kleiner ist als rechts dann..
    {
     moveRight();                                     //Rufe die moveRight Funktion auf
     delay(500);                                      //Pausiere das Programm eine halbe Sekunde, bis der Roboter gedreht hat
    }
    else                                              //falls die Distanz links und rechts gleich ist (das passiert sehr unwarscheindlich) dann..
    {
     moveBackward();                                  //Rufe die moveBackward Funktion auf
     delay(200);                                      //Pausiere das Programm für 200 Millisekunden um den Roboter rückwärts fahren zu lassen
     moveRight();                                     //rufe die moveRight Funktion
     delay(200);                                      //Pausiere das Programm für 200 Millisekunden um den Roboter nach rechts zu drehen
    }
  moveStop();
  }
}

void moveForward()                                    //Diese Funktion macht das der Roboter vorwärts fährt
{
  digitalWrite(LeftMotorBackward, LOW);
  digitalWrite(LeftMotorForward, HIGH);
  digitalWrite(RightMotorBackward, LOW);
  digitalWrite(RightMotorForward, HIGH);
}

void moveBackward()                                  //Diese Funktion macht das der Roboter rückwärts fährt
{
  digitalWrite(LeftMotorForward, LOW);
  digitalWrite(LeftMotorBackward, HIGH);
  digitalWrite(RightMotorForward, LOW);
  digitalWrite(RightMotorBackward, HIGH);
}

void moveLeft()                                      //Diese Funktion macht das der Roboter nach links dreht
{
  digitalWrite(LeftMotorForward, LOW);
  digitalWrite(LeftMotorBackward, HIGH);
  digitalWrite(RightMotorBackward, LOW);
  digitalWrite(RightMotorForward, HIGH);
  
}

void moveRight()                                    //Diese Funktion macht das der Roboter nach rechts dreht
{
  digitalWrite(LeftMotorBackward, LOW);
  digitalWrite(LeftMotorForward, HIGH);
  digitalWrite(RightMotorForward, LOW);
  digitalWrite(RightMotorBackward, HIGH);
}

void moveStop()                                     //Diese Funktion macht das der Roboter still steht
{
  digitalWrite(LeftMotorBackward, LOW);
  digitalWrite(LeftMotorForward, LOW);
  digitalWrite(RightMotorForward, LOW);
  digitalWrite(RightMotorBackward, LOW);
}
void scan()                                         //Diese Funktion misst die Distanz vor dem Ultraschallsensor
{
  delay(50); 
  Time = sonar.ping(); 
  distance = Time / US_ROUNDTRIP_CM;
}