Está en la página 1de 9

 Aprender a usar sensor ultrasónico de distancia

 Conocer las librerías disponibles para el sensor


 Conocer las funciones del sensor
 Crear un detector de distancia para automóviles
 Aprender a utilizar la pantalla LCD junto a un sensor ultrasónico
 Aprender a programar la pantalla LCD mientras se utiliza un sensor ultrasónico
 Practicar en la programación de un LCD 2x16

Arduino Uno o similar.


 Esta sesión acepta cualquier
otro modelo de Arduino.

Protoboard

Cables UTP
Sensor de distancia HC-
SR04

LED

Resistencias

Pantalla LCD
Lo que haremos es utilizar un sensor de distancia HC-SR04 para medir distancias o superar
obstáculos, entre otras posibles funciones (muy parecido a los sensores de aparcamiento
de los coches modernos), que nos permite enviar estos pulsos ultrasónicos y escuchar el eco
de retorno. Midiendo este tiempo, podemos calcular la distancia hasta el obstáculo y
mostrarlo en una pantalla LCD.
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.

#include <LiquidCrystal.h> pinMode(EchoPin, INPUT);

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

lcd.begin(16, 2);

const int EchoPin = 2; lcd.setCursor(0, 0);

const int TriggerPin = 3; lcd.print("Distancia: ");

const int SonidoPin = 13; }

void loop() {

void setup() { lcd.setCursor(1, 1);

Serial.begin(9600); int cm = ping(TriggerPin, EchoPin);

pinMode(SonidoPin, OUTPUT); //Serial.print("Distancia: ");

pinMode(TriggerPin, OUTPUT); //Serial.println(cm);


lcd.print(cm); digitalWrite( SonidoPin , LOW) ;

Serial.println(cm); delay(250); }

delay(1000); }//fin del else }

int ping(int TriggerPin, int EchoPin) {

if (cm < 50 && cm > 0) { //si cm menor long duration, distanceCm;


50 cm y mayor a 0 cm, ambia la
velocidad del sonido

digitalWrite ( SonidoPin , HIGH) ; digitalWrite(TriggerPin, LOW); //para


generar un pulso limpio ponemos a LOW
delay(50); 4us

digitalWrite( SonidoPin , LOW) ; delayMicroseconds(4);

delay(50); digitalWrite(TriggerPin, HIGH);


//generamos Trigger (disparo) de 10us
}//fin del if
delayMicroseconds(10);

digitalWrite(TriggerPin, LOW);
else {
duration = pulseIn(EchoPin, HIGH);
if (cm > 50 && cm < 150)//si cm mayor //medimos el tiempo entre pulsos, en
a 50cm y menor a 150cm, cambia la microsegundos
velocidad del sonido
distanceCm = duration * 10 / 292 / 2;
{ //convertimos a distancia, en cm
digitalWrite ( SonidoPin , HIGH) ; return distanceCm;
delay(250); }

También podría gustarte