Problema con 2 sensores ultrasonicos

Tengo que hacer un proyecto llamado asistente de estacionamiento, el cual consta de dos sensores ultrasonicos y un buzzer para esto use la libreria new ping, pero el problema que tengo es para que el buzzer suene en una distacia definida. La distancia definida es que suene cuando la distancia esta en 10 cm
les paso el codigo

#include <NewPing.h>

#define TRIGGER_PIN  2  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     3 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define TRIGGER_PIN2 4
#define ECHO_PIN2    5
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
#define buzzer       7

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
NewPing sonar1(TRIGGER_PIN2, ECHO_PIN2, MAX_DISTANCE);

void setup() {
  pinMode(buzzer, OUTPUT);
  Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
}

void loop() {
  delay(1000);                 
  Serial.print("Ping: ");
  Serial.print(sonar.ping_cm()); 
  Serial.println("cm");

  delay(1000);                 
  Serial.print("Ping1: ");
  Serial.print(sonar1.ping_cm()); 
  Serial.println("cm");

  if(sonar.ping_cm() < 10)
  {
     tone(buzzer,1000);
  delay(1000);
  noTone(buzzer);
  delay(1000);
}
}

Esto debería funcionar pero no entiendo para que pones delay(1000) luego del noTone(buzzer)

 if(sonar.ping_cm() < 10)
  {
     tone(buzzer,1000);
  delay(1000);
  noTone(buzzer);
  delay(1000);
}

Y ten cuidado usando tantos delays porque por ese tiempo no estas verificando la distancia

surbyte:
Esto debería funcionar pero no entiendo para que pones delay(1000) luego del noTone(buzzer)

 if(sonar.ping_cm() < 10)

{
    tone(buzzer,1000);
  delay(1000);
  noTone(buzzer);
  delay(1000);
}




Y ten cuidado usando tantos delays porque por ese tiempo no estas verificando la distancia

Pero no le modificaste nada al codigo, no funciona como lo copie en la publicacion

Yo no dije que lo modifiqué, te hice una consulta solamente.
Lo que tienes debe funcionar, si no funciona es que algo tiene tu sensor.

Probaste un ejemplo básico de la librería sin alterar?

Yo nunca he utilizado una librería para manejar los sensores ultrasónicos, pero siempre he desconfiado un poco de ellas, te paso un código que tengo hace tiempo para que hagas las pruebas sin librerías y pruebes si te funciona. Sólo es 1 sensor, prueba si te funciona, si es así te puedo seguir ayudando para la programación de lo que necesitas.

#define echo 7
#define trig 10
long duracion, distancia;  
 
void setup() {                
  Serial.begin (9600);       // inicializa el puerto seria a 9600 baudios
  pinMode(echo,INPUT);     // define el pin 6 como entrada (echo)
  pinMode(trig,OUTPUT);    // define el pin 7 como salida  (triger)
  pinMode(led1,OUTPUT);       // Define el pin 13 como salida
  pinMode(led2,OUTPUT);
  }
  
void loop() {

  digitalWrite(trig, 0);
  delayMicroseconds(2);
  digitalWrite(trig, 1);   // genera el pulso de triger por 10ms
  delayMicroseconds(10);
  digitalWrite(trig, 0);
  
  duracion = pulseIn(echo, 1);
  distancia = (duracion/2) / 29;            // calcula la distancia en centimetros

  Serial.print(distancia);
  Serial.println("cm");
  delay (100);
}

Por otro lado revisando tu código, crees que sea necesario usar una velocidad de 115200 para un ejemplo tan básico?. Varias veces tuve problemas de funcionamiento de algunos códigos por tener velocidades tan altas, yo probaría con 9600. Como dice surbyte el código debería funcionar, pero yo probaría quitando tantos delays, sobretodo porque un delay de 1 segundo como los estás implementando quizás sean el motivo de la falla.

Saludos

Jhony9625:
Yo nunca he utilizado una librería para manejar los sensores ultrasónicos, pero siempre he desconfiado un poco de ellas, te paso un código que tengo hace tiempo para que hagas las pruebas sin librerías y pruebes si te funciona. Sólo es 1 sensor, prueba si te funciona, si es así te puedo seguir ayudando para la programación de lo que necesitas.

#define echo 7

#define trig 10
long duracion, distancia;

void setup() {               
  Serial.begin (9600);      // inicializa el puerto seria a 9600 baudios
  pinMode(echo,INPUT);    // define el pin 6 como entrada (echo)
  pinMode(trig,OUTPUT);    // define el pin 7 como salida  (triger)
  pinMode(led1,OUTPUT);      // Define el pin 13 como salida
  pinMode(led2,OUTPUT);
  }
 
void loop() {

digitalWrite(trig, 0);
  delayMicroseconds(2);
  digitalWrite(trig, 1);  // genera el pulso de triger por 10ms
  delayMicroseconds(10);
  digitalWrite(trig, 0);
 
  duracion = pulseIn(echo, 1);
  distancia = (duracion/2) / 29;            // calcula la distancia en centimetros

Serial.print(distancia);
  Serial.println("cm");
  delay (100);
}




Por otro lado revisando tu código, crees que sea necesario usar una velocidad de 115200 para un ejemplo tan básico?. Varias veces tuve problemas de funcionamiento de algunos códigos por tener velocidades tan altas, yo probaría con 9600. Como dice surbyte el código debería funcionar, pero yo probaría quitando tantos delays, sobretodo porque un delay de 1 segundo como los estás implementando quizás sean el motivo de la falla.

Saludos

Gracias por contestar.
Mira te comento el problema que tengo, el codigo funciona en decir la distancia pero lo que no funciona es que el buzzer suene, por ejemplo cuando el sensor este a 10 cm, eso es lo que no funciona.

#define echo 7
#define trig 10
#define buzzer 6
long duracion, distancia;  
 
void setup() {                
  Serial.begin (9600);       // inicializa el puerto seria a 9600 baudios
  pinMode(echo,INPUT);     // define el pin 6 como entrada (echo)
  pinMode(trig,OUTPUT);    // define el pin 7 como salida  (triger)
  pinMode(buzzer,OUTPUT);
  }
  
void loop() {

  digitalWrite(trig, 0);
  delayMicroseconds(2);
  digitalWrite(trig, 1);   // genera el pulso de triger por 10ms
  delayMicroseconds(10);
  digitalWrite(trig, 0);
  
  duracion = pulseIn(echo, 1);
  distancia = (duracion/2) / 29;            // calcula la distancia en centimetros

  Serial.print(distancia);
  Serial.println("cm");
  delay (100);
  if(distancia<=10){
       tone(buzzer,1000);
  delay(300);
  noTone(buzzer);
  delay(300);
}
}

Te aseguraste que el buzzer funciona? Algo simple porque el código esta bien, si mide bien, la condición se cumple para que se accione el buzzer.

dany-o2000:

#define echo 7

#define trig 10
#define buzzer 6
long duracion, distancia;

void setup() {               
  Serial.begin (9600);      // inicializa el puerto seria a 9600 baudios
  pinMode(echo,INPUT);    // define el pin 6 como entrada (echo)
  pinMode(trig,OUTPUT);    // define el pin 7 como salida  (triger)
  pinMode(buzzer,OUTPUT);
  }

void loop() {

digitalWrite(trig, 0);
  delayMicroseconds(2);
  digitalWrite(trig, 1);  // genera el pulso de triger por 10ms
  delayMicroseconds(10);
  digitalWrite(trig, 0);
 
  duracion = pulseIn(echo, 1);
  distancia = (duracion/2) / 29;            // calcula la distancia en centimetros

Serial.print(distancia);
  Serial.println("cm");
  delay (100);
  if(distancia<=10){
      tone(buzzer,1000);
  delay(300);
  noTone(buzzer);
  delay(300);
}
}

Pero eso es para un solo sensor, yo necesito para dos