Problema gestione dei motori di un robot

Se il motor driver fosse bruciato non andrebbe proprio verro?
Perché quando faccio i collegamenti come nell'immagine del primo post che ho pubblicato i motori girano ma non hanno la forza di spostare niente.
A parte la poca forza dei motori sto provando a scrivere il programma. Ho un altro dubbio riguardo all’ utilizzo del sensore di prossimità http://www.sparkfun.com/datasheets/Sensors/Infrared/GP2D120XJ00F_SS.pdf questo è il programma che sto scrivendo

 int M1a=11; // motore di sinistra movimento zampe  avanti
 int M1i=10; // motore di sinistra movimento zampe indietro 
 int M2a=5; // motore di sinistra movimento zampe  avanti
 int M2i=6; // motore di sinistra movimento zampe indietro 
 int distanza  =0;
 
 void setup() {
 pinMode(M1i,OUTPUT);
 pinMode(M1a,OUTPUT);
 pinMode(M2i,OUTPUT);
 pinMode(M2a,OUTPUT);
}

 void loop() {
 distanza= analogRead(A0); 
 digitalWrite(M1i,LOW);
 digitalWrite(M2i,LOW); 
 digitalWrite(M1a,HIGH); // avanzamento del robot 
 digitalWrite(M2a,HIGH);  
 if( distanza  >=900){
 digitalWrite(M1i,LOW);
 digitalWrite(M2a,LOW);
 digitalWrite(M2i,HIGH);
 digitalWrite(M1a,HIGH); //rotazione di 90°
 delay(2000);
 distanza= analogRead(A0); }
 }

il mio problema è che il programma entra nel ciclo if quando il sensore arriva a 5cm da un oggetto mentre a me servirebbe che entrasse nel ciclo if quando si trova ad una distanza di 10cm ho provato ha modificare il valore della condizione del if ma l'unica condizione che funzione è 900(già abbastanza strana ) per qualsiasi altro numero che scrivo entra nel ciclo if indipendentemente dalla distanza del sensore dall'oggetto. Cosa sbaglio??