Pantallas LCD, son de bones, m’ancanten
Wep! Com va? Avui anem a xarrar de ses pantalles LCD. Sí, yo también he sucumbido a los poderes de les pilotes. Pero a lo que iba, hoy hablamos de las pantallas LCD.
Las pantallas LCD son esas pantallas que se encuentran en algunas máquinas que nos muestran mensajes como por ejemplo las de los relojes digitales. Sé que no soy claro. Sería algo como esto (Imagen de Arduino Labs en Flickr bajo licencia CC-BY-2.0):
¿Todo más claro? M’ancanta…
La electrónica detrás de las pantallas LCD
Las pantallas LCD son capaces de mostrar un número determinado de caracteres. Algunas de estas pantallas están retroiluminadas con una luz.
Las pantallas LCD las puedes encontrar en varios formatos, pero el que yo coy a utilizar es el de 16×2. Esto significa que puedo escribir en dos líneas, que serán como mucho de 16 caracteres de largo.
Si te fijas, esto significa que actúan como una matriz. Tengo 2 filas y 16 columnas a rellenar. Son como 32 cuadrados que puedo rellenar con un caracter o dejar en blanco. Como si fuese el ahorcado. De hecho sería una genialidad hacer un ahorcado con una pantalla LCD…
Pantallas LCD pin a pin…
El problema de estas pantallas a la hora de ponerlas en marcha es su conexionado. Dispone de 16 pines. Y conectar 16 pines siempre el algo tedioso…
Estas tarjetas tienen por el lado de la pantalla la soldadura de los pines y en cada uno de ellos se encuentra escrito el nombre de cada uno de los pines. Si le das la vuelta, tendrás una numeración de los pines (seguramente solamente un 1 y un 16 para indicar la posición inicial y final).
Es esta numeración la que seguiremos. Vamos despacito:
Pin 1 (VSS) – GND: Este pin irá conectado al GND de tu Arduino y sirve para el retorno de la alimentación.
Pin 2 (VDD) – 5V: Este pin va conectado a los 5V de Arduino y son los 5 Voltios que alimentan la placa de la pantalla LCD.
Pin 3 (VD) – Contraste de pantalla: Este pin controla el contraste de la pantalla, para ello necesitamos dar un voltaje desde Arduino que sea el que maneje el contraste. El 100% del contraste sería con 5 Voltios y el 0% sería con 0 Voltios. Es por ello que lo que suele utilizar la gente es un potenciómetro. Este pin iría conectado a la pata del medio del potenciómetro. Las otras patas irían una a GND y otra a 5V. Otra forma sería conectar un voltaje fijo, como el que sale de 3V3…
Pin 4 (RS) – Selector de registro: Controla dónde estamos escribiendo dentro de la memoria. Puede ser en el registro de datos, que es lo que se mantiene en la pantalla. También podemos escribir en el registro de instrucciones que es dónde se encuentran las siguientes instrucciones que se llevaran a cabo. Tranquilo que este pin no es algo que vayas a manipular tú, sino que la librería de Arduino ya está preparada para hacerlo por ti. Este pin lo conectaremos en el pin digital 7 de Arduino.
Pin 5 (R/W) – Escritura y lectura: Este pin selecciona si estamos en modo escritura o en modo lectura. Lo conectaremos a 5 Voltios si queremos leer. En nuestro caso queremos escribir así que lo conectaremos a GND, que son 0 Voltios.
Pin 6 (E) – Enable: Habilita la escritura en los registros por lo que será un pin que pondremos a HIGH (5 Voltios) cuando queramos escribir una nueva frase en nuestra pantalla. Lo conectaremos al pin digital 8 de Arduino.
Pin 7 a 14 (DBX) – Pines de datos: 8 pines donde enviaremos nuestros datos en un tamaño de 8 bits. Aquí es dónde se carga cada una de las letras a utilizar. Utilizaremos solo mensajes de 4 bits así que conectaremos DB7 al pin 12 de Arduino, DB6 al pin 11, DB5 al pin 10 y DB4 al pin 9.
Pin 15 (A) – Luz de fondo +: Es la alimentación de la luz de fondo, es por eso que conectamos este pin a 5V.
Pin 16 (K) – Luz de fondo -: Es el negativo de la alimentación de la luz de fondo por lo que conectaremos este pin al pin GND de nuestro Arduino.
Bueno, con todo esto solamente nos hace falta programar un poco…
Información básica sobre Proteción de datos
Responsable ➥ Sergio Luján Cuenca
Finalidad ➥ Gestionar el envío de correos electrónicos con artículos, noticias y publicidad. Todo relacionado con los temas de rufianenlared.com
Legitimación ➥ Consentimiento del interesado
Destinatarios ➥ Estos datos se comunicarán a MailRelay para gestionar el envío de los correos electrónicos
Derechos ➥ Acceder, rectificar y suprimir los datos, así como otros derechos, como se explica en la política de privacidad
Plazo de conservación de los datos ➥ Hasta que se solicite la supresión por parte del interesado
Información adicional ➥ Puedes encontrarla en la política de privacidad y el aviso legal
La programación de mensajes
Para utilizar la pantalla LCD debemos de cargar la librería adecuada en nuestro archivo “.ino“. Si no lo hiciésemos nos volveríamos locos programando cada una de las funciones que ahora veremos.
#include <LiquidCrystal.h>
Después de añadir la librería como hemos visto y antes del setup, hay que crear un objeto de esta clase. Esto lo haremos así:
LiquidCrystal pantalla(7,8,9,10,11,12);
Si te fijas los números que acompañan a nuestra declaración son los pines de los que hemos ido hablando durante el post. Exactamente el pin 7 es la señal RS (pin 4 del LCD), el pin 8 es la señal de EN (pin 6 del LCD) y el resto de señales son las DBX (pines 11, 12, 13 y 14 del LCD).
Dándole a las funciones bones bones
Una vez creado nuestro objeto al que hemos llamado pantalla, deberemos de utilizar sus funciones. La primera es begin, que se encontrará dentro del setup y que es la función imprescindible. Esto es porque fija el número de caracteres por fila y el número de filas.
pantalla.begin(16, 2);
Después de esta llamada, ya pueden llegar el resto. Y lo que quiere todo el mundo es mostrar sus mensajitos sin sentido en la pantalla. Para ello hay que utilizar la función print (¡Cuánta originalidad parfavar!).
pantalla.print("Pilotes");
Simplemente lo que hacemos es pasarle la frase que queremos mostrar por la pantalla y listo…. Pero, ¿Qué pasaría si quisiésemos escribir desde un punto concreto de la matriz?
Es decir, qué pasa si quiero que los dos primeros cuadros se queden en blanco o con el valor anterior. Para ello tenemos la función setCursor, que nos moverá dentro de la matriz.
pantalla.setCursor(2, 0);
Como ves, he escrito los números 2 y 0. Esto es porque quiero escribir en el tercer caracter (3-1=2) y en la primera fila (1-1=0). Esta resta de 1 a todos los números es porque se empieza a contar desde 0, algo bastante habitual en programación.
Y bueno, ahora vamos a lo importante. Cuando hayas terminado de jugar, tocará limpiarlo todo…
pantalla.clear();
La función clear se encargará de todo sin necesidad de parámetro alguno.
¡Que s’acaben les pilotes!
Y hasta aquí llegamos, pilotes! Dale duro a las pantallas LCD que son duras de conectar pero ya has visto que tienen una programación muy básica. Así que si quieres hacer un proyecto para personas no electrónicas este es un buen complemento para ser añadido en tus proyectos.
Y bueno, siempre puedes poner algún mensaje secreto para que los usuarios de tus inventos se rían un poco…