El sensor de ultrasonidos se enmarca dentro de los sensores para medir distancias o superar obstáculos, entre otras posibles funciones.
En este caso vamos a utilizarlo para la medición de distancias. Esto lo consigue enviando un ultrasonido (inaudible para el oído humano por su alta frecuencia) a través de uno de la pareja de cilindros que compone el sensor (un transductor) y espera a que dicho sonido rebote sobre un objeto y vuelva, retorno captado por el otro cilindro.
Este sensor en concreto tiene un rango de distancias sensible entre 3cm y 3m con una precisión de 3mm.
¿Qué recibimos en el sensor?
El tiempo que transcurre entre el envío y la recepción del ultrasonido.
¿Cómo vamos a traducir dicho tiempo en distancia?
Aprovechando que la velocidad de dicho ultrasonido en el aire es de valor 340 m/s, o 0,034 cm/microseg (ya que trabajaremos con centímetros y microsegundos). Para calcular la distancia, recordaremos que v=d/t (definición de velocidad: distancia recorrida en un determinado tiempo).
De la fórmula anterior despejamos d, obteniendo d=v·t, siendo v la constante anteriormente citada y t el valor devuelto por el sensor a la placa Arduino.
También habrá que dividir el resultado entre 2 dado que el tiempo recibido es el tiempo de ida y vuelta.
Material
Sensor ultrasonidos HC-SR04
Placa Arduino UNO
Cables
Cable USB
Protoboard
Conexiones
El sensor consta de 4 pines: «VCC» conectado a la salida de 5V de la placa, «Trig» conectado al pin digital de la placa encargado de enviar el pulso ultrasónico, «Echo» al pin de entrada digital que recibirá el eco de dicho pulso y «GND» a tierra.
Programa
long distancia; long tiempo; void setup(){ Serial.begin(9600); pinMode(9, OUTPUT); /*activación del pin 9 como salida: para el pulso ultrasónico*/ pinMode(8, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/ } void loop(){ digitalWrite(9,LOW); /* Por cuestión de estabilización del sensor*/ delayMicroseconds(5); digitalWrite(9, HIGH); /* envío del pulso ultrasónico*/ delayMicroseconds(10); tiempo=pulseIn(8, HIGH); /* Función para medir la longitud del pulso entrante. Mide el tiempo que transcurrido entre el envío del pulso ultrasónico y cuando el sensor recibe el rebote, es decir: desde que el pin 12 empieza a recibir el rebote, HIGH, hasta que deja de hacerlo, LOW, la longitud del pulso entrante*/ distancia= int(0.017*tiempo); /*fórmula para calcular la distancia obteniendo un valor entero*/ /*Monitorización en centímetros por el monitor serial*/ Serial.println("Distancia "); Serial.println(distancia); Serial.println(" cm"); delay(1000); }
Vídeo
Os animamos a subir vuestros vídeos del tutorial funcionando en nuestro Facebook o
nombrándonos en Twitter.
P.

Hola, buenas noches.
Quisiera pedirle un favor si es posible. En vez de poner el código que hay en tu página web puedes echarle una captura al tinkercad con el código pero de la otra forma. Es que no lo entiendo y tengo que hacer 20 de esos y del tipo de ese código no me entero de nada. Por favor ayúdeme porque este 2 trimestre me he prometido sacar el 10 y necesito ayuda de su parte. Se lo suplico, yo se que usted me dirá que se lo pregunte al profesor, pero llevo todo el trimestre preguntándole sobre como hacer hasta el scratch y eso que es el más fácil. Entonces yo siento que si le pregunto otra vez me va a decir que animo y suerte que seguro puedo y yo no quiero decepcionar pero necesito ayuda.
Lo siento por causarle molestias.
Espero de su ayuda.
Un saludo cordialmente.