Problema con la programmazione

Salve a tutti,
avrei un problema con la programmazione del mio progetto.
Il mio progetto consiste di far muovere la mia macchina in modo automatico, attraverso un sensore di prossimità riusciva a evitare gli ostacoli. Più precisamente dovrebbe, andare sempre avanti, quando incontra un ostacolo, torna indietro di qualche passo, poi faceva muovere le ruote a destra avanti e le ruote sinistra indietro, o al contrario, facendolo girare(ho un problema in questo pezzo nel programma, è giusto usare un ciclo for??).
PS: Vi allego il circuito e le altri parti del progetto sono qui:http://forum.arduino.cc/index.php?topic=239792.msg1720532#msg1720532

// inizializzo i PIN per collegare la scheda SFR05
int echoPin = 6;                                // echo (digital 2)
int initPin = 5;                                // trigger  (digital 3)
unsigned long pulseTime = 0;                    
unsigned long distance = 0;                     // distanza in cm

int ENA=10;//connected to Arduino's port 10
int IN1=8;//connected to Arduino's port 8
int IN2=9;//connected to Arduino's port 9
int ENB=11;//connected to Arduino's port 11
int IN3=12;//connected to Arduino's port 12
int IN4=13;//connected to Arduino's port 13

//setup
void setup() {

  pinMode(initPin, OUTPUT);                     
  pinMode(echoPin, INPUT);    

 pinMode(ENA,OUTPUT);//output
 pinMode(ENB,OUTPUT);
 pinMode(IN1,OUTPUT);
 pinMode(IN2,OUTPUT);
 pinMode(IN3,OUTPUT);
 pinMode(IN4,OUTPUT);
 digitalWrite(ENA,LOW);
 digitalWrite(ENB,LOW);//stop driving
 //va avanti
 digitalWrite(IN1,LOW); 
 digitalWrite(IN2,HIGH);
 digitalWrite(IN3,HIGH);
 digitalWrite(IN4,LOW);
 Serial.begin(9600);  //inizializza la seriale
}
// loop principale
void loop() {
  //manda un impulso di ampiezza 10 us
  digitalWrite(initPin, HIGH);                    
  delayMicroseconds(10);                          
  digitalWrite(initPin, LOW);                     
  pulseTime = pulseIn(echoPin, HIGH);             // Aspetta l'eco di risposta
  distance = pulseTime/58;                        // Distance = tempo impulso / 58 per calcolare i [cm] di distanza.
  
  delay(100); 
  
analogWrite(ENA,255);//start driving motorA
analogWrite(ENB,255);//start driving motorB
if (distance >=8)
  {//se la distanza è maggiore di 8 cm, continua ad andare avanti
   digitalWrite(IN1,LOW); 
   digitalWrite(IN2,HIGH);//setting motorA's directon
   digitalWrite(IN3,HIGH);
   digitalWrite(IN4,LOW);//setting motorB's directon
 }
 //se la distanza è minore di 8 cm, va all'indietro di qualche passo
else
{
 delay(9000);
 for(int x=0; x>=4;x++)
 {
 digitalWrite(IN1,HIGH); 
 digitalWrite(IN2,LOW);//setting motorA's directon
 digitalWrite(IN3,LOW);
 digitalWrite(IN4,HIGH);//setting motorB's directon
 }//gira a destra
  for(int x=0; x>=4;x++)
 {
 digitalWrite(IN1,HIGH); 
 digitalWrite(IN2,LOW);//setting motorA's directon
 digitalWrite(IN3,HIGH);
 digitalWrite(IN4,LOW);//setting motorB's directon
 }
}  
}

// inizializzo i PIN per collegare la scheda SFR05
int echoPin = 6;                                // echo (digital 2)
int initPin = 5;                                // trigger  (digital 3)
unsigned long pulseTime = 0;                    
unsigned long distance = 0;                     // distanza in cm

int ENA=10;//connected to Arduino's port 10
int IN1=8;//connected to Arduino's port 8
int IN2=9;//connected to Arduino's port 9
int ENB=11;//connected to Arduino's port 11
int IN3=12;//connected to Arduino's port 12
int IN4=13;//connected to Arduino's port 13

void avanti()
{
   digitalWrite(IN1,LOW); 
   digitalWrite(IN2,HIGH);//setting motorA's directon
   digitalWrite(IN3,HIGH);
   digitalWrite(IN4,LOW);//setting motorB's directon
}
void indietro()
{
   digitalWrite(IN1,HIGH); 
   digitalWrite(IN2,LOW);//setting motorA's directon
   digitalWrite(IN3,LOW);
   digitalWrite(IN4,HIGH);//setting motorB's directon
}
void gira()
{
   digitalWrite(IN1,HIGH); 
   digitalWrite(IN2,LOW);//setting motorA's directon
   digitalWrite(IN3,HIGH);
   digitalWrite(IN4,LOW);//setting motorB's directon
}
//setup
void setup() {

  pinMode(initPin, OUTPUT);                     
  pinMode(echoPin, INPUT);    

 pinMode(ENA,OUTPUT);//output
 pinMode(ENB,OUTPUT);
 pinMode(IN1,OUTPUT);
 pinMode(IN2,OUTPUT);
 pinMode(IN3,OUTPUT);
 pinMode(IN4,OUTPUT);
 digitalWrite(ENA,LOW);
 digitalWrite(ENB,LOW);//stop driving
 //va avanti
 digitalWrite(IN1,LOW); 
 digitalWrite(IN2,HIGH);
 digitalWrite(IN3,HIGH);
 digitalWrite(IN4,LOW);
 Serial.begin(9600);  //inizializza la seriale
}
// loop principale
void loop() {
  //manda un impulso di ampiezza 10 us
  digitalWrite(initPin, HIGH);                    
  delayMicroseconds(10);                          
  digitalWrite(initPin, LOW);                     
  pulseTime = pulseIn(echoPin, HIGH);             // Aspetta l'eco di risposta
  distance = pulseTime/58;                        // Distance = tempo impulso / 58 per calcolare i [cm] di distanza.
  
  delay(1000); 
  
analogWrite(ENA,255);//start driving motorA
analogWrite(ENB,255);//start driving motorB

if(distance >=5)
  avanti();
else
{
  gira();
  delay(100);
  indietro();
}
}