Configuración de dos sensores ultrasónicos"

Hola compis os pongo este post para que me hecheis una mano con un sketch.
Os explico tengo un sobrino al punto de perder la vista por una enfermedad os aseguro que no puedo ni contároslo de la pena k tengo en mi alma y estoy creando un tipo de casco ( ya lo tengo impresa en 3D y todo preparado ) para cuando venga el día y pierda la vista del todo.
El tema es k el sketch k tengo es una réplica de un sensor de aparcamiento y utiliza solo un sensor por ultrasonidos es algo k nos podemos imaginar se te acerca el coche empieza a pitar más cerca más pitidos. Ok esto es un poco por encima.
Lo k he probado yo es duplicar el mismo código para tener 2 ultrasonidos 2 altavoces y 2 servos pero todavía no soy capaz de hacer k funcione duplicando el código existente cuando intento modificar para añadir otro sensor y altavoz con sus salidas correspondientes y toda la istorias se me cuelga el Arduino y me pita a lo loco.
Pues acabo de empezar con él Arduino solo por quierer ayudar a mi sobrino y me da k no voy a tener el casco preparado para cuando llegue el tiempo .
Yo había pensado y trasteando con él sketch de 1 solo ultrasonido con su altavoz y a la señal del altavoz añadirle en paralelo la señal de la servo cuando pita el altavoz se mueve el servo y así seguido. Entonces en lo k os pido ayuda es en enseñarme o modificar el e sketch para 2 ultrasonidos y dos altavoces digamos izquierda y derecha los servos no me preocupa como ya os comenté que con poner en paralelo la señal del altavoz me manda señal al servo y funciona a las mil maravillas.
Pues este es el sketch:

#include "Ultrasonic.h" //Libreria del sonar
Ultrasonic ultrasonic(6,7); //Trigger, Echo
// Señal acustica
#include "pitches.h" //Libreria que contiene las notas musicales
int sonido = NOTE_E4; //Declaramos la nota musical elegida como el sonido
int sonar; //Declaramos la variable sonar
void setup()
{
 //Serial.begin(9600); //Inicio de la comunicacion serie a 9600 baudios
}
void loop()
{
 
 sonar = ultrasonic.Ranging(CM); //Leemos la distancia del sonar 
 
 //La funcion ultrasonic.ranging(cm) viene declarada en la libreria del sonar
 //Calcula la distancia a la que rebota una señal enviada basandose en el 
 //tiempo que tarda en recorrer dicha distancia, devolviendonos la distancia
 //en centimetros, lista para utilizar en casos de medicion por ultrasonidos.
 
 while (sonar < 60) //Mientras que la distancia sea menor a 60 cm
 { 
 noTone(8); //Mantenemos el sonido apagado
 
 delay(sonar*10); //Delay dependiente del valor del sonar. Si la distancia se reduce
 //el delay es menor y la señal acustica sonara con mayor frecuencia.
 //Si la distancia aumenta, el delay aumenta, disminuyendo la frecuencia
 //con la que suenan los pitidos.
 
 tone(8, sonido); //Señal acustica de aviso 
 
 delay(100); //Delay para mantener la señal acustica 0,1 segundos minimo
 
 noTone(8); //Apagamos el sonido
 
 while (sonar < 10) //Si la distancia del sonar es menor que 10 cm
 {
 tone(8, sonido); //Suena sin interrupciones indicando la proximidad del objeto
 sonar = ultrasonic.Ranging(CM); //Distancia del sonar 
 } 
 
 sonar = ultrasonic.Ranging(CM); //Leemos la distancia del sonar para volver a empezar
    }

 }

Este sería el código a duplicar chicos. Gracias y cualquier ayuda me vale.

La solución es usar una librería como NewPing
El ejemplo para varios sensores es el que te sirve a ti

// ---------------------------------------------------------
// This example code was used to successfully communicate
// with 15 ultrasonic sensors. You can adjust the number of
// sensors in your project by changing SONAR_NUM and the
// number of NewPing objects in the "sonar" array. You also
// need to change the pins for each sensor for the NewPing
// objects. Each sensor is pinged at 33ms intervals. So, one
// cycle of all sensors takes 495ms (33 * 15 = 495ms). The
// results are sent to the "oneSensorCycle" function which
// currently just displays the distance data. Your project
// would normally process the sensor results in this
// function (for example, decide if a robot needs to turn
// and call the turn function). Keep in mind this example is
// event-driven. Your complete sketch needs to be written so
// there's no "delay" commands and the loop() cycles at
// faster than a 33ms rate. If other processes take longer
// than 33ms, you'll need to increase PING_INTERVAL so it
// doesn't get behind.
// ---------------------------------------------------------
#include <NewPing.h>
 
#define SONAR_NUM     2 // Number or sensors.
#define MAX_DISTANCE 200 // Max distance in cm.
#define PING_INTERVAL 33 // Milliseconds between pings.
 
unsigned long pingTimer[SONAR_NUM]; // When each pings.
unsigned int cm[SONAR_NUM]; // Store ping distances.
uint8_t currentSensor = 0; // Which sensor is active.
 
NewPing sonar[SONAR_NUM] = { // Sensor object array.
  NewPing(6, 7, MAX_DISTANCE),
  NewPing(8, 9, MAX_DISTANCE)
};
 
void setup() {
  Serial.begin(115200);
  pingTimer[0] = millis() + 75; // First ping start in ms.
  for (uint8_t i = 1; i < SONAR_NUM; i++)
    pingTimer[i] = pingTimer[i - 1] + PING_INTERVAL;
}
 
void loop() {
  for (uint8_t i = 0; i < SONAR_NUM; i++) {
    if (millis() >= pingTimer[i]) {
      pingTimer[i] += PING_INTERVAL * SONAR_NUM;
      if (i == 0 && currentSensor == SONAR_NUM - 1)
        oneSensorCycle(); // Do something with results.
      sonar[currentSensor].timer_stop();
      currentSensor = i;
      cm[currentSensor] = 0;
      sonar[currentSensor].ping_timer(echoCheck);
    }
  }
  // The rest of your code would go here.
}
 
void echoCheck() { // If ping echo, set distance to array.
  if (sonar[currentSensor].check_timer())
    cm[currentSensor] = sonar[currentSensor].ping_result / US_ROUNDTRIP_CM;
}
 
void oneSensorCycle() { // 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();
}

Gracias voy a probar esta misma tarde.

muchas gracias lo acabo de probar y me rezulta muy dificil trabajar con este tipo de libreria con ultrasonic es muy facil. recuerden que llevo 4 dias con el arduino. porfa podriamos meter 2 sensores con sus respectivos altavoces en mi sketch ???
gracias.

AHora que veo mejor lo que quieres hacer porque le vas a poner dos sensores? Normalmente los ciegos mueven la cabeza para saber direccionalmente en donde esta el objeto.
Si le pones dos eso lo va a confundir. Yo dejaría uno.
Además no se como que quieres hacer con los sonidos porque eso será abrumador en la cabeza de una persona.
Algo asi tal sea lo que quieres. En lo personal no me gusta
Te cambie los while pero si quieres vuelve a ponerlos con tu criterio, incluyendo la lectura interna de sonar1 y 2

// Defino sonar1 con pines 6 trigger 7 echo
// Defino sonar2 con pines 8 trigger 9 echo
// Defino sonido1 en pin 10
// Defino sonido2 en pin 11

#include "ultrasonic1.h" //Libreria del sonar

Ultrasonic ultrasonic1(6,7); //Trigger, Echo
Ultrasonic ultrasonic1(8,9); //Trigger, Echo

// Señal acústica
#include "pitches.h" //Libreria que contiene las notas musicales
#define  PinSound1  10
#define  PinSound2  11
int sonido = NOTE_E4; //Declaramos la nota musical elegida como el sonido
int sonar1; //Declaramos la variable sonar
int sonar2; //Declaramos la variable sonar


void setup() {
    Serial.begin(9600); //Inicio de la comunicacion serie a 9600 baudios
}


void loop() {

  sonar1 = ultrasonic1.Ranging(CM); //Leemos la distancia del sonar 
  sonar2 = ultrasonic2.Ranging(CM); //Leemos la distancia del sonar 

  //La funcion ultrasonic1.ranging(cm) viene declarada en la libreria del sonar
  //Calcula la distancia a la que rebota una señal enviada basandose en el 
  //tiempo que tarda en recorrer dicha distancia, devolviendonos la distancia
  //en centimetros, lista para utilizar en casos de medicion por ultrasonidos.

  if (sonar1 < 10 || sonar2 < 10) { //Si la distancia del sonar es menor que 10 cm
      tone(PinSound1, sonido); //Suena sin interrupciones indicando la proximidad del objeto
  } 

  if (sonar1 < 60 && sonar1 >= 10) {  //Mientras que la distancia sea menor a 60 cm
      noTone(PinSound1); //Mantenemos el sonido apagado

      delay(sonar1*10); //Delay dependiente del valor del sonar. Si la distancia se reduce
      // el delay es menor y la señal acustica sonara con mayor frecuencia.
      // Si la distancia aumenta, el delay aumenta, disminuyendo la frecuencia
      // con la que suenan los pitidos.

      tone(PinSound1, sonido); //Señal acustica de aviso 

      delay(100); //Delay para mantener la señal acustica 0,1 segundos minimo

      noTone(PinSound1); //Apagamos el sonido
  }



  if (sonar2 < 60 && sonar2 >= 10) {  //Mientras que la distancia sea menor a 60 cm
      noTone(PinSound2); //Mantenemos el sonido apagado

      delay(sonar2*10); //Delay dependiente del valor del sonar. Si la distancia se reduce
      // el delay es menor y la señal acustica sonara con mayor frecuencia.
      // Si la distancia aumenta, el delay aumenta, disminuyendo la frecuencia
      // con la que suenan los pitidos.

      tone(PinSound2, sonido); //Señal acustica de aviso 

      delay(100); //Delay para mantener la señal acustica 0,1 segundos minimo

      noTone(PinSound2); //Apagamos el sonido
  }
}

Asi solo se va a ejecutar la condición que corresponda.