Objetivos
- Vamos a montar un display LCD de 16×2.
- Veremos cómo enviar información
- Definiremos algunos caracteres especiales
Material requerido.
Tienda España | Tienda Mexico | |
---|---|---|
![]() | Kit inicio UNO | Kit inicio UNO |
![]() | Kit Inicio Mega | Kit Inicio Mega |
Los displays LCD
Los displays LEDs de 7 segmentos, que vimos en las sesiones anteriores, están muy bien, son baratos y prácticos, pero tienen el inconveniente de que no pueden mostrar mensajes de texto, sino solo números.
Se echa de menos algún sistema para mostrar mensajes de texto sencillos, y por eso se comercializan los displays LCD. Son faciles de encontrar en diversos formatos : 16×2 (16 caracteres x 2 líneas) o LCD 16×4 (16 caracteres x4 lunes).
- LCD viene del inglés Liquid Crystal Display, o sea Pantalla de cristal liquido.
Son una opción muy sencilla de usar, y además, dan un toque muy pro a vuestros proyectos, y por eso, en los últimos años los displays LCD han ganado mucha aceptación en productos comerciales de todo tipo.
Básicamente porque:
- Son baratos.
- Están disponibles en varios tamaños y configuraciones.
- Son de bajo consumo.
- Muy prácticos si te basta con mostrar solo texto (y algunos caracteres especiales).
En esta sesión veremos cómo conectarlos a vuestros Duinos y cómo usarlos para sacar mensajes al exterior.
Antes de empezar
Aunque, últimamente, estos displays suelen venir con los pines soldados, todavía hay muchos sitios que cuando compras uno de estos, te lo envían en kit, con los pines aparte para que los sueldes
- En algún momento tendremos que hablar de cómo soldar componentes, pero ese día, aún no ha llegado.

Lo primero que tienes que saber, es que tienes que soldarlos, y que no vale sujetar los pines de algún modo más o menos extravagante. Los sueldas y punto. Hazte a la idea. Cualquier otra solución acabara funcionando mal, o directoramente con el display quemado.
Cuando lo tengas listo, pincha el display en la protoboard, dejando sitio para el resto de componentes y cables, recuerda que habrá muchos, así que se generoso con el espacio que dejas.
Diagrama de conexión
Aquí teneis el esquema de conexión:

Y este es el esquema para potoboard:

La conexión no es complicada, pero requiere ser cuidadoso. Asi que vamos a ir paso a paso con los diferentes cables. Empieza conectando tensión y GND a la protoboard.

Vamos ahora a a conectar la alimentación el panel LCD. Conecta el pin16 del LCD a Ground y el 15 a 5V

Si conectas ahora el cable USB a tu Duino, el LCD debería iluminarse, si no, revisa tus cables antes de seguir.
Vamos a conectar ahora, el potenciómetro de ajuste. Para ello conecta uno de los extremos del pot a GND y el otro a 5V. El centro al pin 3 del LCD.
Aprovechemos también para dar tensión al panel LCD, El pin 1 va a GND y el 2 a tensión:

Si todo ha ido bien, ya podemos encender el dispay y probarlo. Conecta el USB a tu Arduino y veamos. Si vas girando el potenciómetro, en algún momento tienes que ver unos cuadraditos en la pantalla, en caso contrario revisa las conexiones. No sigas, si no ves esto.

Si ya veis las matrices de puntos en la pantalla, podemos seguir.
Vamos a conectar ya los pines de datos y control. Sin entrar en muchos detallas, no vamos a usar todos los pines disponibles, porque no los necesitamos. Solo usaremos dos pines de control, RS y EN y los 4 pines de datos D7, D6, D5, y D4 . No necesitamos mas por ahora.
Vamos con las conexiones de control del display:
RW, LCD pin 5 GND RS, LCD pin 4 Arduino pin 7 EN, LCD pin 6 Arduino pin 8
Y ya solo nos quedan los 4 cables de datos.
DB7, LCD pin 14 Arduino pin 12 DB6, LCD pin 13 Arduino pin 11 DB5, LCD pin 12 Arduino pin 10 DB4, LCD pin 11 Arduino pin 9

El programa de control
Vamos a usar una librería de control del panel LCD, que viene incluida en nuestro Arduino. Pinchad en:
\\Programa\Importar Libreria\LiquidCrystal
Y ahora podemos importar uno de los ejemplos o escribir el nuestro, comentando el código.Lo primero es que al importar la librería nos ha escrito esto:
#include <LiquidCrystal.h>
Despues, hay que inicializar la librería. Creamos una instancia llamada lcd, de la clase LiquidCrystal y le pasamos como parámetros los pines que hemos usado:
LiquidCrystal lcd(7, 8, 9, 10, 11, 12); // ( RS, EN, d4, d5, d6, d7)
- Tened cuidado porque los pines que hemos usado, no corresponden a los ejemplos de Arduino, así que podéis cargarlos, peroaseguraros de cambiar la línea de definición de los pines, o no correrán.
El resto es sencillo
void setup() { lcd.begin(16, 2); // Fijar el numero de caracteres y de filas lcd.print("Prometec.net"); // Enviar el mensaje } void loop() { lcd.setCursor(0, 8); // set the cursor to column 0, line 1 lcd.print(millis() / 1000); // print the number of seconds since reset: }
- Cuidado: Como siempre la primera linea, la superior, es la linea 0 y la segunda la linea 1.
Estos display son muy pesados de cablear, pero muy sencillos de utilizar.
Que lo que hace es posicionar el cursor del panel, en la posición 6 de la segunda línea, para escribir la hora centrada. Aquí os dejo un mini video con el resultado.
La librería LCD, viene con varios ejemplos muy interesantes, que os conviene probar. Recordad, simplemente, que tenéis que cambiar las definiciones de los pines para que corran.
Un ejemplo particularmente interesante, es el de CustomCharacter, en el que define una serie de símbolos especiales y los mueve por la pantalla en función de los valores que lee de un potenciómetro.
Sin llegar a tanta sofisticación, es muy interesante que veamos cómo definir algunos caracteres especiales, porque en la tabla base del LCD, no están incluidas ñ, acentos, grados, o €. Así que dependiendo del uso que le deis pude seros de interés saber cómo definir tus propios símbolos.
Definiendo tus propios caracteres
Vamos a definir un carácter propio, para digamos, el símbolo de grados centígrados, por ejemplo.
Lo primero que tenéis que saber, es que los caracteres se definen con un array ( si, de nuevo) de 8×8, como si los dibujarais en una cuadricula de ese tamaño, y rellenando el cuadradito completo.
Así por ejemplo para el símbolo del grado seria:

byte grado[8] = { 0b00001100, // Los definimos como binarios 0bxxxxxxx 0b00010010, 0b00010010, 0b00001100, 0b00000000, 0b00000000, 0b00000000, 0b00000000 };
Y aqui teneis una foto del resultado

Por último, y para cerrar ya la sesión (Todo llega en la vida), Deciros que de nuevo, hemos montado este display a la brava, conectando un buen número de cables.
Esto solo se puede justificar, porque en su día piqué y me compre un display de estos ( en realidad, dos. Tengo otro de 16×4), pero si vais a compraros un LCD, por Dios, compraros uno que sea I2C o algo así, vuestra salud mental mejorará mucho y solo usa 4 cables.
En la próxima sesión montaremos uno para que veáis la diferencia.
Resumen de la sesión
En este curso arduino hemos aprendido lo siguiente:
- Hemos visto los displays LCD de 16 caracteres 2 líneas.
- Lo suficiente como para comprender, que como ejercicio está bien, pero veremos otras maneras de incluir estos displays, menos trabajosas.
- Existen también, displays de 16 caracteres y 4 líneas, si necesitáis mas espacio en pantalla.
- Son muy cómodos de manejar porque podemos imprimir directamente, como si fuera una puerta serie.
- Podemos ( y tendremos que hacerlo, seguro) definir caracteres y símbolos no incluidos en el display.
- Hemos visto los displays LCD de 16 caracteres 2 líneas.