El siguiente código nos permitirá comprobar por el puerto serie si las mediciones del sensor son correctas.
// Pin de la tarjeta Arduino donde se haya conectado el pin Echo del sensor ultrasonidos
int pinEcho = 6;
// Pin de la tarjeta Arduino donde se haya conectado el pin Trig del sensor ultrasonidos
int pinTrig = 3;
void setup() {
// Activación del pin TRIG como salida, para enviar el pulso ultrasónico
pinMode(pinTrig, OUTPUT);
// Activación del pin ECHO como entrada, para recibir el pulso ultrasónico
pinMode(pinEcho, INPUT);
// Activación del monitor serie para mostrar mensajes posteriormente
Serial.begin(9600);
}
void loop() {
// Envío del pulso ultrasónico por el pin TRIG. Requiere establecer previamente
// la señal LOW y luego enviar el pulso con el valor HIGH. Se establece una
// pausa entre cada orden para dar tiempo a su ejecución
digitalWrite(pinTrig, LOW);
delayMicroseconds(10);
digitalWrite(pinTrig, HIGH);
delayMicroseconds(10);
// Obtener el tiempo que se tarda en recibir la señal HIGH que fue enviada
// por el pin Trig, y que será recibido por el pin Echo.
// Se esperará a recibir la señal durante un tiempo máximo marcado por el
// tercer parámetro (en microsegundos).
// En caso de no recibir la señal en el tiempo máximo establecido, se obtiene 0
long pulseDuration = pulseIn(pinEcho, HIGH, 10000);
// Una vez recibida la señal, se calculará la distancia en función de la velocidad
// del sonido 340 m/s
int distance = (int)(0.034 * pulseDuration / 2);
if(distance > 0) {
// Mostrar el resultado por el monitor serie
Serial.print("Distancia ");
Serial.print(distance);
Serial.println(" cm");
} else {
Serial.println("Distancia desconocida");
}
}
Para simplificar el código, podemos obtener el mismo resultado haciendo uso de la libreria "NewPing" que se puede instalar desde el gestor de librerías de Arduino o desde el siguiente archivo: https://bitbucket.org/teckel12/arduino-new-ping/downloads
#include <NewPing.h>
int pinEcho = 6;
int pinTrig = 3;
int max_distance = 200; // Distancia máxima a detectar en cm
NewPing sonar(pinTrig, pinEcho, max_distance);
void setup() {
Serial.begin(9600);
}
void loop() {
int distance = sonar.ping_cm();
if(distance > 0) {
Serial.print("Distancia ");
Serial.print(distance);
Serial.println(" cm");
} else {
Serial.println("Distancia desconocida");
}
}