Arduino Basico

Programacion: Bibliotecas. Funciones. Displays LCD

Descripcion general

LCD proviene del inglés Liquid Crystal Display, o sea Pantalla de cristal liquido. En los casos en que un display de 7 segmentos no sea apto para los usos de nuestros proyectos (por ejemplo mostrar mensajes de texto).

Los displays LCD son la mejor opcion para interacutar con el usuario

Sus ventajas son:

  1. Son relativamente economicos: Tienen un costo de $70 pesos hasta $170, dependiendo de los materiales (link)
  2. Están disponibles en varios tamaños: 0802 (dos lineas de 8 caracteres cada uno), 1602 (dos lineas de 16 caracteres cada uno) y 2004 (cuatro lineas de 20 caracteres cada uno).
  3. Poseen una configuracion comun y/o expnadible: basados en el chipset HD44780 soportan un controlador I2C, para la transmision de datos serial.
  4. Son de bajo consumo: trabajan con 5 volts DC y un maximo de corriente de 25mA cuando usan el backlight (luz de contraste)

Conexion de un display

Para realizar la conexion de un display LCD tendremos que seguir la siguiente esquema

Observando el esquema podemos ver que el conexionado no es complicado, pero si necesita un potenciometro para regular la intensidad de los caracteres y una serie de 12 cables.

La conexion en una protoboard es la siguiente.

El adaptador I2C

En la practica vamos a utilizar un circuito adicional llamado IIC o I2C, un bus de datos que permite enviar y recibir datos mediante un reloj y un control Maestro/Esclavo

Este circuito simplemente puede soldarse a practicamente cualquier display y cuenta con

  1. Un jumper para activar o desactivar el backlight
  2. Conexion en paralelo para los 11 cables de conexion
  3. Un potenciometro para regular la intensidad de los caracteres
  4. Cuatro pines de conexion: GND, VCC, SDA  y SCL
Pines Marcador Tipo de conexion Imagen
1 GND Masa o 0 Volts  
2 VCC 5 Volts
3 SDA Transmision de datos
4 SCL Reloj de sincronizacion para el SDA

NOTA IMPORTANTE: los pines de SDA y SCL deberán conectarse a las siguientes puertos segun la version de microcontrolador que utilicemos.

  • En el Arduino UNO, los pines I2C están en los pines analógicos A4 (SDA) y A5 (SCL).
  • En el Arduino Mega y DUE, son el 20 (SDA) y en el 21(SCL).

El Scanner I2C

Cada componente que conectamos al bus I2C tiene una dirección única, y cada dato y orden que transmitimos al bus, lleva anexada una dirección.  Comunmente deberiamos comprobar la información técnica del fabricante del componente.

Ya que los fabricante no indican gralmente las direcciones de sus dispositivos, tenemos que recurrir a un programa realizado por terceros: I2CSCANNER (link)

Simplemente debemos cargar el programa y abrir el Serial Monitor y encontrar la direccion hexadecimal con la que trabaja el I2C

Conexion y librerias

El diagrama de conexion se simplifica, como se muestra en el siguiente grafico.

Para poder utilizar este controlador adicional deberemos instalar un par de librerias, las que contienen las funciones que utilizaremos para interactuar con el display.

Recursos:

  1. Libreria LiquidCrystal (link)
  2. Referencia a las librerias (link)

a continuacion un resumen de las funciones mas utilizadas de esta libreria.

Funcion Sintaxis Uso Ejemplo
begin lcd.begin(columnas,filas); inicializa el display indicando la lineas y caracter desde donde mostrara los caracteres lcd.begin();

lcd.begin(0,1);

lcd.begin(8,1);

clear lcd.clear(); limpia el contenido de un lcd lcd.clear();
write lcd.write(caracter); escribe un caracter en el LCD lcd.write(“A”);
print lcd.print(caracteres, BASE); imprime una secuencia de caracteres. Opcional BASE: BIN para caracteres binarios, DEC para decimales, OCT para octales y HEX para hexadecimales. lcd.print(“Hola”);
home lcd.home(); Coloca el cursor en el primer caracter del display. lcd.home();
setcursor lcd.setCursor(col, fil); Coloca el cursor en la linea y caracter correspondiente (0,1,2,3 para las lineas y 0,1,…19 para los caracteres. lcd.setCursor(0, 1);
lcd.setCursor(8, 0);
backlight lcd.backlight();

lcd.noBacklight();

Enciende (o apaga)el backlight o luz de contraste. lcd.backlight();
lcd.noBacklight();
 autoscroll lcd.autoscroll();

lcd.noAutoscroll();

Permite (o bloquea) que los caracteres se desplacen de derecha a izquierda, en caso de que los caracteres superen los 18. lcd.autoscroll();
lcd.noAutoscroll();

Ejercicos de practica


Revise el codigo y escriba las siguientes sentencias para escribir en lineas diferentes.

lcd.setCursor(2,0); //El primer texto debe escribirse a partir del caracter 3

lcd.setCursor(0,1);//El segundo texto debe escribirse en la segunda linea


Ejercicio 2

El siguiente ejercicio muestra como manejar el backlight.

Revise el codigo ya que posee un error.


Ejercicio 3

Lea mensajes a traves del serial monitor y envielos al display

Abra el monitor serial y envie mensajes


Ejercicio 4. Sensor de temperatura

Combine con los ejemplos del sensor DHT11 para crear una sensor de temperatura.