Sensor de distancia con Display usando Teensy 3.0

En un artículo anterior vimos el sensor HC-SR04 y dejamos la idea de un sensor de estacionamiento

Teensy_display_distanciaAhora veremos una interesante aplicación de este sensor como un sensor de distancia con display, esto se puede instalar en un auto como sensor para  estacionamiento y mostrar mensajes de advertencia configurables.

 

Materiales

Los elementos para trabajar son los siguientes

  • Display 16×2  HD44780 disponible en Amazon
  • Potenciómetro 10KΩ
  • Sensor de distancia por ultrasonido HC-SR04 disponible en Amazon
  • Teensy 3.0 , artículo inicial aquí 
  • Protoboard
  • Cables
  • Cable USB
  • PC con Teensyduino instalado

Usamos la biblioteca para LCD de Arduino en el Teensy

Conectar el cable USB con el PC y el Teensy para cargar el siguiente sketch, que esta modificado del «Hola Mundo»

/*
  LiquidCrystal Library

Demonstrates the use a 16x2 LCD display.  The LiquidCrystal
library works with all LCD displays that are compatible with the
Hitachi HD44780 driver. There are many of them out there, and you
can usually tell them by the 16-pin interface.

Library originally added 18 Apr 2008
by David A. Mellis
library modified 5 Jul 2009
by Limor Fried (http://www.ladyada.net)
example added 9 Jul 2009
by Tom Igoe
modified 22 Nov 2010
by Tom Igoe

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/LiquidCrystal
*/

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(14, 15, 16, 17, 18, 19);
const int trigPin = 20;
const int echoPin = 21;

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
lcd.print("Distancia en cm");
  Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  int duration, distance;
digitalWrite(trigPin, HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.4;
if (distance >= 200 || distance <= 0){
//Serial.println("Out of range");
lcd.print("Fuera de Rango");
delay(300);
lcd.clear();
}
else {
lcd.print(distance);
lcd.setCursor(0, 0);
lcd.print("Distancia en cm");
delay(500);
lcd.clear();
}
if (distance <= 30){
  lcd.setCursor(4, 1);
  lcd.print("MUY CERCA !");
  delay(500);
  lcd.clear();
}
delay(100);
}

Desde el punto de vista del Hardware estos son los pines para conectar el display

Diagrama de conexión para Display, además conectar R/W a Tierra.

 

La librería se ocupa de esta manera, la expresión

LiquidCrystal lcd(RS, Enable, DB4, DB5, DB6, DB7) crea el objeto y asigna los  pines del display que se conectan  en el Teensy, en este caso usamos los pines 14, 15, 16, 17, 18 y 19 respectivamente.

    Ademas de los pines indicados arriba, debes considerar la siguiente lista para conectar el display

  • En el display, el pin R/W debe estar a Tierra.
  • Los pines DB0, DB1, DB2 y DB3 se dejan sin conectar.
  • Pin 1 va +5V
  • Pin 2 y +5V van a un extremo del potenciómetro, el otro extremo a Tierra y el pin 3 va al pin central. La iluminación del display se controla variando el potenciómetro.
  • Pin 15 tiene un diodo 1N4004 conectado a +5V

 

El prototipo completo con el display funcionando, se ve en la siguiente imagen

Teensy_display_distancia

Author: Manuel Carrasco

Ingeniero Eléctrico, Institutano, instructor certificado Cisco, en twitter @mcarrasco con comentarios y opiniones personales.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *