Pasamos muchas horas sentados frente a pantallas, pero pocos comprenden como funcionan en realidad. En este post os enseñaremos a programar una pantalla LCD con una placa Arduino, así podrás mostrar mensajes en pantalla e incluso utilizando las funciones de la biblioteca LiquidCrystal, crear efectos y mostrar imágenes.
Esto te será muy útil sobre todo si tienes en mente realizar un proyecto más complejo en el que necesites mostrar datos en pantalla, como por ejemplo, la información obtenida por distintos sensores conectados a Arduino. Así podrás monitorizar toda esa información y mucho más.
Materiales
- Arduino UNO Rev3. (Cómpralo en nuestra tienda)
- Una pantalla LCD (Liquid Crystal Display). En nuestro caso usaremos una pantalla LCD 16×2 (Columnas x Filas), que son de las más comunes. Yo usaré una LCM1602C.
- Hilos de conexión unifilares.
- Un potenciómetro 10KΩ.
- Una breadboard o protoboard para realizar las conexiones más cómodamente.
- Arduino IDE instalado en nuestra Raspberry Pi, PC o Mac, para poder realizar el sketch.
Procedimiento
La pantalla LCD conectada a Arduino nos permitirá mostrar texto de una manera sencilla. La plataforma Arduino cuenta con bibliotecas como “LiquidCrystal” (escrita por Limor Fried) que permite controlar displays LCDs compatibles con el driver Hitachi HD44780 (muy común en el mercado). Lo que haremos será mostrar el mensaje ComoHacer.eu en pantalla, pero tú puedes modificarlo a gusto para mostrar lo que desees.
Si os fijáis en la pantalla LCD que tenéis, suele tener unas inscripciones por la parte delantera o trasera en las que indica qué es cada pin de conexión. En mi caso viene por la parte trasera, como podéis apreciar en la siguiente ilustración:
Nota: si no estáis seguros, podéis mirar el modelo de pantalla LCD que tenéis y buscar en Google para acceder o descargar el datasheet (pdf) de vuestra pantalla. En éste documento, el fabricante os detalla todos los datos necesarios para hacerla funcionar.
Se puede apreciar que en el caso de la LCM1602C la numeración de los pines de conexión comienza desde derecha a izquierda, ¡Ojo, visto desde atrás! (16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1). Si seguimos observando vemos que nos indica que el pin 1 corresponde a GND, el dos a la entrada de tensión Vdd, el 3 a Vo, el 4 a RS, el 5 a RW, 6 a E, 7-14 a Dbx, 15 a BL1 y 16 a BL2. A priori, si no habéis manejado pantallas LCD os sonará a chino, pero ahora explico que es cada cosa:
- RS (Register Select): es el pin que controla la memoria del LCD, e indica que registro de la memoria será el que se lee o escribe. Desde esta memoria se obtienen los datos para mostrar en pantalla, pero también se obtienen instrucciones que el controlador del LCD necesita para actuar.
- RW (Read/Write): es el pin de lectura y escritura, que dirá si se escribe en memoria o si se lee en cada momento.
- E (Enable): pin que habilita los registros.
- DB0-DB7: son los pines de datos, de los que se sacan los bits que llegan al registro. En el caso de la pantalla que tengo los designa como DB0-DB7 y corresponden a la numeración 7-14, pero esto puede variar en función del fabricante o modelo de la LCD. Por ejemplo, en algunas he visto que lo designan como DO0-D07.
- Vo: es el pin de contraste del display, con el podremos modificar el contraste de la pantalla.
- Vdd: es el pin de alimentación, por el que entra la tensión que hará funcionar al LCD. Normalmente es de +5v.
- GND: complementa al anterior pin, siendo el otro pin de alimentación que se conectará a tierra.
- BL1 y BL2: son los pines de retro iluminación. Controlan la luminosidad del LCD. En algunas pantallas puede aparecer con los símbolos Bklt+ y Bklt-. Las siglas provienen de “Back Light”.
En principio parece todo un poco tedioso, pero es sencillo. Tan solo es que hay demasiada información que dar para tener claro como va la pantalla, una vez sabido es pan comido.
Ahora que ya deberías tener claro para que sirve cada pin, vamos a explicar como se debe hacer la conexión para nuestro ejemplo (no es la única, puedes añadir miles de elementos más o incluso hacer la conexión de otras formas posibles). Lo que haremos será pinchar la pantalla LCD a un protoboard para que sea más sencillo el conexionado. Luego uniremos con los hilos unifilares el pin RS a la E/S digital 12 de Arduino, el pin E a la E/S digital número 11 de Arduino. Pasamos a conectar los pines de datos DB4-DB7 a las E/S digitales desde la 5 hasta la 2 (es decir 4-5 / 5-4 / 6-3 / 7-2, el resto de pines de datos DB0-DB3 no se conectarán puesto que trabajaremos solo con 4 bits, en vez de 8). Seguimos conectando, respectivamente, los pines de Vdd y GND a las salidas +5V y GND de la placa Arduino. Luego conectaremos el pin Vo al pin central de un potenciómetro (que a su vez tendrá los pines de los extremos conectados a +5V y GND), ignorando las BL1 y BL2 que no utilizaremos. Como una imagen vale más que mil palabras…
Ya lo tenemos todo, el circuito está creado y todo está preparado para hacer el sketch que programe su funcionamiento. Es el momento de utilizar nuestro ordenador o Raspberry Pi para escribir el código necesario en el Arduino IDE:
Y finalizo explicando algo que no he explicando anteriormente, que es la funcionalidad del potenciómetro. Él te servirá para ajustar el contraste, puede que la pantalla no tenga un buen contraste si no lo ajustas y el texto no se vea bien. Prueba a moverlo hasta que estés contento con el resultado. Suerte y feliz disproyecto!
El artículo Cómo controlar una pantalla LCD con Arduino ha sido originalmente publicado en ComoHacer.eu | ¿Inventamos juntos?.
Artículos relacionados:
- Hazte tu propio Arduino
- Domótica con Arduino: climatizador automático
- Control de Arduino mediante la Raspberry Pi