Duda copia de códigos

Lo primero gracias por ayudarme
Estoy intentando hacer con mi hijo un coche 4x4 con sensor hc-sr04 y un servo que lo va girando. con Arduino Mega y Controlador de motores l293d
me funciona la programacion de motores y el sensor hc-sr04

#include <NewPing.h>
#include <AFMotor.h>

#define TRIGGER_PIN 31 // Arduino pin tied to trigger pin on the ultrasonic sensor.    
#define ECHO_PIN 33    // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 
     
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance

AF_DCMotor Motor1(1);
AF_DCMotor Motor2(2);
AF_DCMotor Motor3(3);
AF_DCMotor Motor4(4);

int Vel = 200 ;    // Define la velocidad base del Rover

void setup() 
{
   Serial.begin(9600);
   pinMode(35, OUTPUT) ;      // Usaremos el pin 35 como VCC de 5V
   digitalWrite(35, HIGH) ;
   delay(5000);       // Por si acaso
}

void loop() 
{ 
   //con las dos siguientes instrucciones vamos a medir la distancia ante el objeto más cercano
   //como está dentro del loop, esta medición se va a realizar mientras el coche se esté ejecuentando, es decir, continuamente
   unsigned int uS = sonar.ping(); // Send ping, get ping time in microseconds (uS)

   //el resultado del pulso se guarda en la variable "dist"
   int dist = uS / US_ROUNDTRIP_CM ; 
  Serial.println(dist) ;

  // si la distancia es mayor a 35cm avanzamos
   if (dist > 35 or dist==0 )
     {
       Avance() ;
     }
   // si la distancia es menor a 15 cm hacemos primero un retroceso, pausa de medio segundo, y hacemos un giro a la izquierda
   else if ( dist < 15 or dist == 1)
     {
       Retroceso() ;
       delay(500);
       giroSobresi_izquierda() ;
       delay(500);
     }
     
   //en cualquier otro caso, que será que el valor esté entre 15 y 30 haremos un giro a la izquierda
   else
     { 
      giroSobresi_derecha() ;
       delay (400);
     }
   delay(250);      
}

void SetVel(int v1, int v2, int v3, int v4)
{
         Motor1.setSpeed(v1);
         Motor2.setSpeed(v2);
         Motor3.setSpeed(v3);
         Motor4.setSpeed(v4);         
}

void Avance()
{ 
  SetVel(Vel,Vel,Vel,Vel);
  Motor1.run(FORWARD) ;
  Motor2.run(FORWARD);
  Motor3.run(FORWARD);
  Motor4.run(FORWARD); 
}

void Retroceso()
{ 
  SetVel(Vel,Vel,Vel,Vel);
  Motor1.run(BACKWARD) ;
  Motor2.run(BACKWARD);
  Motor3.run(BACKWARD);
  Motor4.run(BACKWARD);
}

void Paro()
{ Motor1.run(RELEASE);
  Motor2.run(RELEASE);
  Motor3.run(RELEASE);
  Motor4.run(RELEASE); 
}

void giroIzquierda()
{  
   SetVel( Vel, Vel, Vel, Vel) ;
    Motor1.run(FORWARD) ;
    Motor2.run(RELEASE);
    Motor3.run(RELEASE);
    Motor4.run(FORWARD);    
}
         
void giroDerecha()
{  
    SetVel( Vel, Vel, Vel, Vel) ;
    Motor1.run(RELEASE) ;
    Motor2.run(FORWARD);
    Motor3.run(FORWARD);
    Motor4.run(RELEASE);    
}


  void giroSobresi_derecha()
{  
    SetVel( Vel, Vel, Vel, Vel) ;
    Motor1.run(FORWARD) ;
    Motor2.run(BACKWARD);
    Motor3.run(BACKWARD);
    Motor4.run(FORWARD);    
}


  void giroSobresi_izquierda()
{  
    SetVel( Vel, Vel, Vel, Vel) ;
    Motor1.run(BACKWARD) ;
    Motor2.run(FORWARD);
    Motor3.run(FORWARD);
    Motor4.run(BACKWARD);    
}

Tambien el codigo con el servo

// Incluímos la librería para poder controlar el servo
#include <Servo.h>
 
// Declaramos la variable para controlar el servo
Servo servoMotor;
 
void setup() {
  // Iniciamos el monitor serie para mostrar el resultado
  Serial.begin(9600);
 
  // Iniciamos el servo para que empiece a trabajar con el pin 9
  servoMotor.attach(9);
 
  // Inicializamos al ángulo 0 el servomotor
  servoMotor.write(0);
}
 
void loop() {
 
  // Vamos a tener dos bucles uno para mover en sentido positivo y otro en sentido negativo
  // Para el sentido positivo
  for (int i = 0; i <= 180; i++)
  {
    // Desplazamos al ángulo correspondiente
    servoMotor.write(i);
    // Hacemos una pausa de 25ms
    delay(25);
  }
 
  // Para el sentido negativo
  for (int i = 179; i > 0; i--)
  {
    // Desplazamos al ángulo correspondiente
    servoMotor.write(i);
    // Hacemos una pausa de 25ms
    delay(25);
  }
}

Pero cuando junto ambos, no se donde tengo el error, he copiado todo el codigo del servo dentro del codigo inicial el void setup dentro del otro y el loop ,pero me da error.

#include <NewPing.h>
#include <AFMotor.h>

#define TRIGGER_PIN 31 // Arduino pin tied to trigger pin on the ultrasonic sensor.    
#define ECHO_PIN 33    // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 
     
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance

AF_DCMotor Motor1(1);
AF_DCMotor Motor2(2);
AF_DCMotor Motor3(3);
AF_DCMotor Motor4(4);

int Vel = 200 ;    // Define la velocidad base del Rover

// Incluímos la librería para poder controlar el servo
#include <Servo.h>
 
// Declaramos la variable para controlar el servo
Servo servoMotor;
 

void setup() 
{
   Serial.begin(9600);
   pinMode(35, OUTPUT) ;      // Usaremos el pin 35 como VCC de 5V
   digitalWrite(35, HIGH) ;
   delay(5000);       // Por si acaso


  // Iniciamos el monitor serie para mostrar el resultado
  Serial.begin(9600);
 
  // Iniciamos el servo para que empiece a trabajar con el pin 9
  servoMotor.attach(9);
 
  // Inicializamos al ángulo 0 el servomotor
  servoMotor.write(0);
}
void loop() 
{ 
   //con las dos siguientes instrucciones vamos a medir la distancia ante el objeto más cercano
   //como está dentro del loop, esta medición se va a realizar mientras el coche se esté ejecuentando, es decir, continuamente
   unsigned int uS = sonar.ping(); // Send ping, get ping time in microseconds (uS)

   //el resultado del pulso se guarda en la variable "dist"
   int dist = uS / US_ROUNDTRIP_CM ; 
  Serial.println(dist) ;

  // si la distancia es mayor a 35cm avanzamos
   if (dist > 35 or dist==0 )
     {
       Avance() ;
     }
   // si la distancia es menor a 15 cm hacemos primero un retroceso, pausa de medio segundo, y hacemos un giro a la izquierda
   else if ( dist < 15 or dist == 1)
     {
       Retroceso() ;
       delay(500);
       giroSobresi_izquierda() ;
       delay(500);
     }
     
   //en cualquier otro caso, que será que el valor esté entre 15 y 30 haremos un giro a la izquierda
   else
     { 
      giroSobresi_derecha() ;
       delay (400);
     }
   delay(250);      
}

void SetVel(int v1, int v2, int v3, int v4)
{
         Motor1.setSpeed(v1);
         Motor2.setSpeed(v2);
         Motor3.setSpeed(v3);
         Motor4.setSpeed(v4);         
}

void Avance()
{ 
  SetVel(Vel,Vel,Vel,Vel);
  Motor1.run(FORWARD) ;
  Motor2.run(FORWARD);
  Motor3.run(FORWARD);
  Motor4.run(FORWARD); 
}

void Retroceso()
{ 
  SetVel(Vel,Vel,Vel,Vel);
  Motor1.run(BACKWARD) ;
  Motor2.run(BACKWARD);
  Motor3.run(BACKWARD);
  Motor4.run(BACKWARD);
}

void Paro()
{ Motor1.run(RELEASE);
  Motor2.run(RELEASE);
  Motor3.run(RELEASE);
  Motor4.run(RELEASE); 
}

void giroIzquierda()
{  
   SetVel( Vel, Vel, Vel, Vel) ;
    Motor1.run(FORWARD) ;
    Motor2.run(RELEASE);
    Motor3.run(RELEASE);
    Motor4.run(FORWARD);    
}
         
void giroDerecha()
{  
    SetVel( Vel, Vel, Vel, Vel) ;
    Motor1.run(RELEASE) ;
    Motor2.run(FORWARD);
    Motor3.run(FORWARD);
    Motor4.run(RELEASE);    
}


  void giroSobresi_derecha()
{  
    SetVel( Vel, Vel, Vel, Vel) ;
    Motor1.run(FORWARD) ;
    Motor2.run(BACKWARD);
    Motor3.run(BACKWARD);
    Motor4.run(FORWARD);    
}


  void giroSobresi_izquierda()
{  
    SetVel( Vel, Vel, Vel, Vel) ;
    Motor1.run(BACKWARD) ;
    Motor2.run(FORWARD);
    Motor3.run(FORWARD);
    Motor4.run(BACKWARD);    
}

 
  // Vamos a tener dos bucles uno para mover en sentido positivo y otro en sentido negativo
  // Para el sentido positivo
  for (int i = 0; i <= 180; i++)
  {
    // Desplazamos al ángulo correspondiente
    servoMotor.write(i);
    // Hacemos una pausa de 25ms
    delay(25);
  }
 
  // Para el sentido negativo
  for (int i = 179; i > 0; i--)
  {
    // Desplazamos al ángulo correspondiente
    servoMotor.write(i);
    // Hacemos una pausa de 25ms
    delay(25);
  }

No se donde cometo el fallo, me compila todo bien hasta que pego el codigo del servo en el loop.
Muchas Gracias

Usas mal la librería, mira este tutorial

AF_DCMotor nombre_motor(num, MOTOR12_freqKHZ);

nombre_motor: el nombre que queramos darle al motor.

num: número del 1 al 4 que indica el conector que utilizaremos en la placa.

freq: puede ser 64, 12, 8 o 1. A más frecuencia, más exactitud y menos ruido pero más consumo.

Ejemplo: AF_DCMotor motor2(2, MOTOR12_64KHZ); crea un motor llamado motor2 que se deberemos poner en el conector número 2 y que cuya frecuencia de PWM será de 64KHz.

NOTA: para los motores 1 y 2 podemos utilizar cualquier frecuencia, pero para los motores 2 y 4 sólo se usa la frecuencia de 1kHz, cualquier otra frecuencia indicada en la función se desechará.

A menos que yo vea una librería AF_DCMotor diferente a la tuya. Asi que porque no pones de donde descargaste la librería.

Podría señalar varios errores pero confirmemos eso primero.

Muchas gracias Surbyte.
podias decirme algun sitio para descargar la libreria AF_DCMotor correcta, en el tutorial marca
http://www.ladyada.net/media/mshield/AFMotor_18-2-09.zip
y la pagina esta desconectada.
voy a leerme primero todo el manual para coger primero los conceptos basicos y no lanzarme a hacer preguntas sin sentido.
Muchas Gracias

Pero simple: Arduino AF_Motor Library y por ejemplo sale la de adafruit
y cuando es así, miras SUS ejemplos no los del tutorial. Te olvidas del tutorial o comparas a ver si sirve o no.

bueno al final voy a ir poco a poco voy a intentar hacer el coche con 3 sensores de ultrasonido
los ultrasonidos van perfectos

#include <NewPing.h>

#define SONAR_NUM     3 // Number or sensors.
#define MAX_DISTANCE 200 // Maximum distance (in cm) to ping.
#define PING_INTERVAL 33 // Milliseconds between sensor pings (29ms is about the min to avoid cross-sensor echo).

unsigned long pingTimer[SONAR_NUM]; // Holds the times when the next ping should happen for each sensor.
unsigned int cm[SONAR_NUM];         // Where the ping distances are stored.
uint8_t currentSensor = 0;          // Keeps track of which sensor is active.

NewPing sonar[SONAR_NUM] = {     // Sensor object array.
  NewPing(31, 33, MAX_DISTANCE), // Each sensor's trigger pin, echo pin, and max distance to ping.
  NewPing(37, 39, MAX_DISTANCE),
  NewPing(41, 43, MAX_DISTANCE),
};

void setup() {
  Serial.begin(9600);
pinMode(35, OUTPUT) ;      // Usaremos el pin 35 como VCC de 5V
digitalWrite(35, HIGH) ;
  
  pingTimer[0] = millis() + 75;           // First ping starts at 75ms, gives time for the Arduino to chill before starting.
  for (uint8_t i = 1; i < SONAR_NUM; i++) // Set the starting time for each sensor.
    pingTimer[i] = pingTimer[i - 1] + PING_INTERVAL;
}

void loop() {
  for (uint8_t i = 0; i < SONAR_NUM; i++) { // Loop through all the sensors.
    if (millis() >= pingTimer[i]) {         // Is it this sensor's time to ping?
      pingTimer[i] += PING_INTERVAL * SONAR_NUM;  // Set next time this sensor will be pinged.
      if (i == 0 && currentSensor == SONAR_NUM - 1) oneSensorCycle(); // Sensor ping cycle complete, do something with the results.
      sonar[currentSensor].timer_stop();          // Make sure previous timer is canceled before starting a new ping (insurance).
      currentSensor = i;                          // Sensor being accessed.
      cm[currentSensor] = 0;                      // Make distance zero in case there's no ping echo for this sensor.
      sonar[currentSensor].ping_timer(echoCheck); // Do the ping (processing continues, interrupt will call echoCheck to look for echo).
    }
  }
  // The rest of your code would go here.
}

void echoCheck() { // If ping received, set the sensor distance to array.
  if (sonar[currentSensor].check_timer())
    cm[currentSensor] = sonar[currentSensor].ping_result / US_ROUNDTRIP_CM;
}

void oneSensorCycle() { // Sensor ping cycle complete, do something with the results.
  for (uint8_t i = 0; i < SONAR_NUM; i++) {
    Serial.print(i);
    Serial.print("=");
    Serial.print(cm[i]);
    Serial.print("cm ");
  }
  Serial.println();
}

ahora lo he intentado introducir junto con los motores y ya solo funciona un sensor y no para aunque este a menos de 1 cm no se si esta variable la tengo mal cm[currentSensor] y tampoco entiendo como antes tomaba los tres sensores y ahora uno solo

#include <AFMotor.h>
#include <NewPing.h>
  
AF_DCMotor motor1(1, MOTOR12_64KHZ); // crea motor #1, 64KHz pwm
AF_DCMotor motor2(2, MOTOR12_64KHZ); // crea motor #2, 64KHz pwm
AF_DCMotor motor3(3, MOTOR12_64KHZ); // crea motor #3, 64KHz pwm, AUNQUE SOLO SE USA FRECUENCIA DE 1KHZ.
AF_DCMotor motor4(4, MOTOR12_64KHZ); // crea motor #4, 64KHz pwm, AUNQUE SOLO SE USA FRECUENCIA DE 1KHZ.

#define SONAR_NUM     3 // Number or sensors.
#define MAX_DISTANCE 200 // Max distance in cm.
#define PING_INTERVAL 33 // Milliseconds between pings.

unsigned long pingTimer[SONAR_NUM]; // Holds the times when the next ping should happen for each sensor.
unsigned int cm[SONAR_NUM];         // Where the ping distances are stored.
uint8_t currentSensor = 0;          // Keeps track of which sensor is active.

NewPing sonar[SONAR_NUM] = {     // Sensor object array.
  NewPing(31, 33, MAX_DISTANCE), // Each sensor's trigger pin, echo pin, and max distance to ping.
  NewPing(37, 39, MAX_DISTANCE),
  NewPing(41, 43, MAX_DISTANCE),
  
  };
  

void setup()
{

Serial.begin(9600);           // set up Serial library at 9600 bps

pinMode(35, OUTPUT) ;      // Usaremos el pin 35 como VCC de 5V
digitalWrite(35, HIGH) ;

// PONEMOS LAS VELOCIDADES
motor1.setSpeed(200);     // velocidad a 200 - el máximo sería 255
motor2.setSpeed(200);
motor3.setSpeed(200);
motor4.setSpeed(200);

pingTimer[0] = millis() + 75;           // First ping starts at 75ms, gives time for the Arduino to chill before starting.
  for (uint8_t i = 1; i < SONAR_NUM; i++) // Set the starting time for each sensor.
    pingTimer[i] = pingTimer[i - 1] + PING_INTERVAL;

}


void loop()
{
for (uint8_t i = 0; i < SONAR_NUM; i++) { // Loop through all the sensors.
    if (millis() >= pingTimer[i]) {         // Is it this sensor's time to ping?
      pingTimer[i] += PING_INTERVAL * SONAR_NUM;  // Set next time this sensor will be pinged.
      if (i == 0 && currentSensor == SONAR_NUM - 1) oneSensorCycle(); // Sensor ping cycle complete, do something with the results.
      sonar[currentSensor].timer_stop();          // Make sure previous timer is canceled before starting a new ping (insurance).
      currentSensor = i;                          // Sensor being accessed.
      cm[currentSensor] = 0;                      // Make distance zero in case there's no ping echo for this sensor.
      sonar[currentSensor].ping_timer(echoCheck); // Do the ping (processing continues, interrupt will call echoCheck to look for echo).
    }
  }
  // si la distancia es mayor a 35cm avanzamos
   if (cm[currentSensor] > 35 or cm[currentSensor]==0 )
     {
       Avance() ;
       delay(500);
     }
// si la distancia es menor a 15 cm hacemos primero un retroceso, pausa de medio segundo, y hacemos un giro a la izquierda
   else if ( cm[currentSensor] < 15 or cm[currentSensor] == 1)
     {
       Atras() ;
       delay(500);
       Giroizquierda() ;
       delay(500);
     }
     //en cualquier otro caso, que será que el valor esté entre 15 y 30 haremos un giro a la derecha
   else
     {
      Giroderecha () ;
       delay (400);
  
     }
}

void echoCheck() { // If ping received, set the sensor distance to array.
  if (sonar[currentSensor].check_timer())
    cm[currentSensor] = sonar[currentSensor].ping_result / US_ROUNDTRIP_CM;
}

void oneSensorCycle() { // Sensor ping cycle complete, do something with the results.
  for (uint8_t i = 0; i < SONAR_NUM; i++) {
    Serial.print(i);
    Serial.print("=");
    Serial.print(cm[i]);
    Serial.print("cm ");
  }
  Serial.println();
}

void Avance ()
{ 
motor1.run(FORWARD);      // AVANCE
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);

}
void Paro ()
{ 
Serial.print(" paro");
motor1.run(RELEASE);      // PARADA
motor2.run(RELEASE);
motor3.run(RELEASE);
motor4.run(RELEASE);
delay(1000);
}
void Atras ()
{ 
Serial.print(" atras");
motor1.run(BACKWARD);     // ATRAS
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(BACKWARD);
delay(1000);
}
void Giroderecha ()
{ 
Serial.print(" giroderecha");
motor1.run(FORWARD);      // girar a derechas
motor2.run(RELEASE);
motor3.run(FORWARD);
motor4.run(RELEASE);
delay(1000);
}
void Giroizquierda ()
{ 
Serial.print(" giroizquierda");
motor1.run(FORWARD);      // girar a izquierdas
motor2.run(RELEASE);
motor3.run(FORWARD);
motor4.run(RELEASE);
delay(1000);
}

A ver donde la estoy liando …