This should work but I can't test right now. It will alternate between forward and reverse based on distance and stop flags. Like I said it leaves conditions where it can get stuck.
int trig = 9;
int echo = 8;
int in1 = 7;
int in2 = 6;
int duration = 0;
int distance = 0;
bool fwdStop = false;
bool revStop = false;
void setup()
{
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
digitalWrite(in1, HIGH);
digitalWrite(in2, HIGH);
Serial.begin(9600);
}
void loop() {
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
duration = pulseIn(echo, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.println(distance);
delay(1000);
if ( distance <= 10 && !fwdStop) {
Serial.print(distance);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
Serial.println("cm MOTOR MOVES FORWARD");
delay(1000);
digitalWrite(in1, HIGH);
digitalWrite(in2, HIGH);
fwdStop = true;
revStop = false;
}
else ( distance > 10 && !revStop){
Serial.print(distance);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
Serial.println("cm MOTOR MOVES BACKWARDS");
delay(1000);
digitalWrite(in1, HIGH);
digitalWrite(in2, HIGH);
fwdStop = false;
revStop = true;
}
}