Construiremos un dispositivo que detecte a que distancia se encuenta un objeto en movimiento, envíe esa distancia al puerto serie y además muestre esa distancia en una pantalla LCD. Dividiremos el proyecto en de dos partes, la primera parte sin utilizar el display LCD y la segunda parte usándolo.
Es importante que la distancia medida esté en metros para que podamos comprenderla y utilizarla fácilmente. Para simplificar el proyecto usaremos una pantalla LCD con un convertidor I2C, por lo que sólo necesitaremos 4 cables para conectarla al Arduino. También necesitaremos añadir bibliotecas adicionales al sketch para utilizar la pantalla LCD.
Qué necesitamos para medir distancias con Arduino?
Estos son los elementos necesarios:
- 1 x placa Arduino Uno R3 [su_button url=»https://amzn.to/32R57aw» target=»blank» background=»#07b307″ icon=»icon: shopping-cart» rel=» nofollow»]Ver Precio[/su_button]
- 1 x HC-SR04 sensor ultrasónico [su_button url=»https://amzn.to/2Nnn8tE» target=»blank» background=»#07b307″ icon=»icon: shopping-cart» rel=» nofollow»]Ver Precio[/su_button]
- 1 x LCD con convertidor I2C
- Cables
Primera Parte: Conectar el Sensor de Movimiento a Arduino
En esta primera parte sólo conectaremos el sensor HC-SR04 a la placa arduino y mostraremos los datos por el puerto serie. Las conexiones se hacen como lo indica el siguiente esquema de abajo. No usaremos la pantalla LCD todavía.
La conexión es muy sencilla, la placa Arduino Uno, el sensor ultrasónico y sólo 4 cables. El código que debemos utilizar para que esto funcione y nos muestre las distancias por el puerto serie es el siguiente:
Sketch Sensor HC-SR04
int trig = 2; //pin trig del sensor ultrasónico int echo = 3; //pin echo del sensor ultrasónico void setup() { Serial.begin(9600); //configuramos el puerto serie en 9600 pinMode(trig, OUTPUT); //configura pin trig como output pinMode(echo,INPUT); //configura pin echo como input } void loop() { //Secuencia de lectura del sensor digitalWrite(trig, LOW); delayMicroseconds(2); digitalWrite(trig, HIGH); delayMicroseconds(10); digitalWrite(trig, LOW); int duracion = pulseIn(echo, HIGH); //Mide el tiempo entre Trig y el Echo int distancia = (duracion/2) / 29.1; //y calcula la distancia Serial.println(distancia); //imprime la distancia en el Serial Port delay(100); }
Al ejecutar este código se debería ver en el puerto serie datos similares a estos:
Segunda Parte: Mostrar distancias en un Display LCD
En esta segunda parte del proyecto, vamos a añadir una pantalla LCD para mostrar las mediciones de distancia, así es como debe quedar todo conectado:
Una vez que tenemos las conexiones hechas toca la parte del código. Necesitaremos utilizar la librería LiquidCrystal_I2C.h que no viene por defecto instalada en Arduino, por lo que lo más probable es que tengamos que descargarla e instalarla. La descarga se hace desde el IDE de Arduino, simplemente abriendo en el menú principal la pestana Programa >> Incuir Librería >> Gestionar Librerías y luego buscando «i2c LCD».
Luego para incluir la librería en nuestro código vamos al menú Programa > Incluir Librería > y buscamos la librería Liquid Crystal I2C.
También debemos usar la librería Wire.h que sirve para manejar el bus I2C.
El código que tenemos que subir al arduino es similar al primero, con la diferencia de que esta vez en lugar de mostrar en el serial, se muestran los valores en la pantalla LCD.
Sketch Sensor HC-SR04 + Display LCD
#include <Wire.h> #include <LiquidCrystal_I2C.h> int trig = 2; //pin trig del sensor ultrasónico int echo = 3; //pin echo del sensor ultrasónico //Setea la pantalla LCD a 0x27 para una pantalla de 16 caracteres y 2 líneas. LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.begin(); //inicializa el display LCD pinMode(trig, OUTPUT); pinMode(echo,INPUT); //Imprime un mensaje de inicio lcd.setCursor(1, 0); lcd.print("SENSOR DE DISTANCIA"); delay(2000); } void loop() { //Secuencia de lectura del sensor digitalWrite(trig, LOW); delayMicroseconds(2); digitalWrite(trig, HIGH); delayMicroseconds(10); digitalWrite(trig, LOW); int duracion = pulseIn(echo, HIGH); //Mide el tiempo entre Trig y el Echo int distancia = (duracion/2) / 29.1; //y calcula la distancia lcd.clear(); //antes de mostrar un valor en la pantalla borra datos anteriores lcd.print(distancia); //muestra la distancia medida delay(100); //Retraso de 100ms }
Otros Proyectos con Arduino que pueden interesarte: