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);
}
}
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.
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
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 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