LCD LiquidCrystal + Ultrasonido

Un complemento imprescindible para muchos de robots o vehículos controlados a distancia es un sensor que nos permita saber la distancia libre de obstáculos para movernos. Si las distancias van a ser pequeñas podemos emplear sensores de infrarrojos, pero si queremos movernos en áreas grandes y poder medir distancias en un rango de varios metros el complemento perfecto es un sensor de ultrasonidos.

Funciona exactamente igual que un radar, de hecho es un pequeño radar. Emite un pulso de sonido a una frecuencia tan alta que es imperceptible para el oído humano y cronometra el tiempo que el sonido tarda en llegar a un obstáculo, rebotar y volver al sensor. Como la velocidad de propagación del sonido en el aire es un dato bien conocido (343.2 m/s) echamos mano de una conocidísima formula (e = v * t) y calculamos la distancia recorrida por el sonido. Parece fácil ¿verdad?… por que lo es.

El esquema es el mismo que el del LCD solo hay que añadir los pines del ultrasonido. Ver tutorial del LCD

vcc: +5v
trig: ping 9 arduino
echo: ping 8 arduino
gnd: negativo

Añadir la librería en la carpeta de arduino, descomprime el rar y metelo en la carpeta C:\Program Files (x86)\Arduino\libraries. Descargar Aquí
abre arduino ejemplos,ultrasonic,lcd

Esta librería tal cual viene tiene un timeout o tiempo de espera de 3ms por lo que la distancia máxima que medirá será de 51cm algo escaso para mi gusto. La ventaja de tener un timeout tan bajo es que se pueden hacer muchas mediciones en poco tiempo. Si como yo os parece poco podéis cambiarlo en el fichero: Ultrasonic.cpp


Buscamos Time_out= que estará a 3000 y ponemos por ejemplo 30000 para 5 metros y grabamos.

 

 CODIGO

// Ultrasonic - Library for HR-SC04 Ultrasonic Ranging Module.

#include <Ultrasonic.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // LCD arduino library

Ultrasonic ultrasonic(9,8); // (Trig PIN,Echo PIN)

void setup() {
lcd.begin(16, 2);
}

void loop()
{
lcd.clear();
lcd.setCursor(0, 0); // primer 0 es el pixel 1 de la izquierda el segundo 2 la linea
lcd.print(ultrasonic.Ranging(CM)); // CM or INC
lcd.print("cm");
delay(100);
}

   

Twitter  

   
© LaGárgolaPC