Auto smart con hc-sr04, l298n e Arduino uno R3

Ciao a tutti, nel mio progetto ho montato su un telaio 2 motori DC controllati da un driver l298n e alimentati da 4 batterie da 1,5 V l'una. Poi ho aggiunto 3 sensori ad ultrasuoni hc-sr04, uno davanti, uno a destra e uno a sinistra. Quando l'auto si avvia dovrebbe iniziare ad andare avanti in automatico, fermarsi se incontra un ostacolo a 20 cm, controllare lo spazio a destra e a sinistra e decidere da che parte andare. Il problema è che quando viene alimentata, la scheda si accende, ma non succede nulla.
Questo è il codice (non dà errori):

#include <NewPing.h>

// Pin motori
int N1 = 4; // Motore A avanti
int N2 = 6; // Motore A indietro
int N3 = 2; // Motore B avanti
int N4 = 7; // Motore B indietro
int ena1 = 3; // PWM Motore A
int ena2 = 5; // PWM Motore B

// Pin sensori ad ultrasuoni
#define echoRight 9
#define trigRight 8
#define trigLeft 11
#define echoLeft 10
#define trigFront 12
#define echoFront 13

#define maxDistance 20 

NewPing sonarFront(trigFront, echoFront, maxDistance);
NewPing sonarRight(trigRight, echoRight, maxDistance);
NewPing sonarLeft(trigLeft, echoLeft, maxDistance);

void setup() {
  pinMode(N1, OUTPUT);
  pinMode(N2, OUTPUT);
  pinMode(N3, OUTPUT);
  pinMode(N4, OUTPUT);
  pinMode(ena1, OUTPUT);
  pinMode(ena2, OUTPUT);
}

void loop() {
  int distanceFront = sonarFront.ping_cm();
  int distanceRight = sonarRight.ping_cm();
  int distanceLeft = sonarLeft.ping_cm();
 if (distanceFront > maxDistance) {
    moveForward();
 }else {
    stopMotors();
   if (distanceRight > maxDistance && distanceLeft <= maxDistance) {
      turnRight();
    } else if (distanceLeft > maxDistance && distanceRight <= maxDistance) {
      turnLeft();
    } else {
      stopMotors();
    }
  }
}

void moveForward() {
  digitalWrite(N1, LOW);
  digitalWrite(N2, HIGH);
  digitalWrite(N3, LOW);
  digitalWrite(N4, HIGH);
  analogWrite(ena1, 225); 
  analogWrite(ena2, 225); 
}

void turnLeft() {
  digitalWrite(N1, LOW);
  digitalWrite(N2, HIGH);
  digitalWrite(N3, HIGH);
  digitalWrite(N4, LOW);
  analogWrite(ena1, 0); 
  analogWrite(ena2, 225); 
  delay(500); 
  stopMotors();
}

void turnRight() {
  digitalWrite(N1, HIGH);
  digitalWrite(N2, LOW);
  digitalWrite(N3, LOW);
  digitalWrite(N4, HIGH);
  analogWrite(ena1, 225); 
  analogWrite(ena2, 0);
  delay(500); 
  stopMotors();
}

void stopMotors() {
  digitalWrite(N1, LOW);
  digitalWrite(N2, LOW);
  digitalWrite(N3, LOW);
  digitalWrite(N4, LOW);
  analogWrite(ena1, 0);
  analogWrite(ena2, 0);
}

Grazie in anticipo.

Forse qua (non sono sicuro ma..):

NewPing sonarFront(trigFront, echoFront, maxDistance);

Limita la distanza massima al valore di maxDistance. Se è così,

if (distanceFront > maxDistance)

Non sarà mai true. E lo steso con gli altri distanze. Prova a chiamare il costruttore senza specifica di distanza massima o con valore maggiore di maxDistance.

Grazie mille, più tardi proverò