Al utilizar sonar, el comando avanzar no funciona

Hola, he estado probando este codigo y al ocupar el sonar, el comando “avanzar” deja de funcionar.
este es mi codigo

#include <inttypes.h>
#include "Arduino.h"

#include <NewPing.h>
#include <Servo.h>
#include <Wire.h>
#define TRIGGER_PIN  8  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     9  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200


Servo Yaw;
Servo Pitch;
Servo Golpe;

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

int movement = 0;
int MotorRight1 = A3;
int MotorRight2 = A2;
int MotorLeft1 = A1;
int MotorLeft2 = A0;
int son = 0;
int leerDistanciaSonar(){

  return sonar.ping_cm();
}

void girarDerecha(int vel) {
  digitalWrite(MotorRight2, HIGH); // Make motor (right rear) action
  digitalWrite(MotorRight1, LOW);
  digitalWrite(MotorLeft2, HIGH); // Make motor (left rear) action
  digitalWrite(MotorLeft1, LOW);
  analogWrite(MotorRight2, vel);
  analogWrite(MotorRight1, 0);
  analogWrite(MotorLeft2, 0);
  analogWrite(MotorLeft1, vel);

}

void moverServoPitch (int posPitch) {
  Pitch.attach(10);
  Pitch.write(posPitch);
}

int distanciaSerial() {
  return son = sonar.ping_cm();
  Serial.println(son);
  delay(100);
}

void avanzar(int velDer, int velIzq) {

  if (movement != 5) {
    detenerse();
    movement = 5;
  }
  digitalWrite(MotorRight2, HIGH); // Make motor (right rear) action
  digitalWrite(MotorRight1, LOW);
  digitalWrite(MotorLeft2, HIGH); // Make motor (left rear) action
  digitalWrite(MotorLeft1, LOW);
  analogWrite(MotorRight2, 0 + velDer);
  analogWrite(MotorRight1, 0 + velDer);
  analogWrite(MotorLeft2, 0 + velIzq);
  analogWrite(MotorLeft1, 0 + velIzq);
}
void detenerse() {
  digitalWrite(MotorLeft1, HIGH);
  digitalWrite(MotorRight1, HIGH);
  digitalWrite(MotorLeft2, HIGH);
  digitalWrite(MotorRight2, HIGH);

  delay(70);
  movement = 0;

}


void setup() {
  Serial.begin(9600);
  pinMode(MotorRight1, OUTPUT);
  pinMode(MotorRight2, OUTPUT);
  pinMode(MotorLeft1,  OUTPUT);
  pinMode(MotorLeft2,  OUTPUT);
  moverServoPitch(110);
  delay(400);
}

void loop() {
  son = leerDistanciaSonar();
  avanzar(255,255);



  }

Si borro lo que dice “leerDistanciaSonar();” y pongo por ejemplo 1, vuelve a funcionar perfectamente.

En tu código avanzar lo primero que haces es detenerlo mira

void avanzar(int velDer, int velIzq) {

  if (movement != 5) {
    detenerse();
    movement = 5;
  }

entonces modifica eso, o detenlo al comenzar en el setup.

El tema es que si pongo solo el comando avanzar funciona, también probé quitando el detenerse y nada :/