Wo ist der Fehler im Code (Auto mit Ultraschallsensor)

Ich hab ein Auto mit Ultraschallsensor gebaut und es Programmiert. Immer wenn ein Gegenstand kommt soll er ausweichen, also kurz rückwärts und dann etwas wenden, doch sobald er einmal etwas gesehen hat hört er nicht mehr auf zu wenden.
Code:

#include <AFMotor.h>

AF_DCMotor motor_vr(3, MOTOR12_64KHZ);
AF_DCMotor motor_hl(1, MOTOR12_64KHZ);
AF_DCMotor motor_vl(4, MOTOR12_64KHZ);
AF_DCMotor motor_hr(2, MOTOR12_64KHZ);
#define trigPin 34
#define echoPin 36

void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
Serial.println(“Motor test!”);

motor_vl.setSpeed(200);
motor_vr.setSpeed(200);
motor_hl.setSpeed(200);
motor_hr.setSpeed(200);
}

void loop()
{
Serial.print(“tick”);

motor_vl.run(FORWARD);
motor_vr.run(FORWARD);
motor_hl.run(FORWARD);
motor_hr.run(FORWARD);
int duration, distance;
digitalWrite(trigPin, HIGH);
delayMicroseconds(2000);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;

if (distance <=30 ){

motor_vl.run(BACKWARD);
motor_vr.run(BACKWARD);
motor_hl.run(BACKWARD);
motor_hr.run(BACKWARD);
delay(1000);
motor_vl.run(FORWARD);
motor_vr.run(BACKWARD);
motor_hl.run(FORWARD);
motor_hr.run(BACKWARD);
delay(1000);
}}

Prüf doch mal mit dem Serial-Monitor ob der US-Sensor auch richtige Werte ausgibt.