El dispositivo que estudiamos hoy es muy útil porque nos puede permitir ver qué es lo que ocurre dentro de nuestro Arduino.
Se trata de una pantalla o display LCD bastante utilizado, un estándar utilizado en multitud de aparatos. Hay varias versiones pero nos vamos a centrar en el que nos permite mostrar 2 líneas de texto de 16 caracteres cada una.
Una pantalla LCD es básicamente una matriz (filas x columnas) de puntos o píxeles en un panel de un material (cristal líquido) que tiene unas características que permiten modificar su transparencia aplicándole una corriente eléctrica de la forma adecuada. Normalmente, un panel LCD no emite ninguna luz, sino que se le aplica una luz de fondo (backlight) por ejemplo a partir de un conjunto de LEDs, y son las propiedades de transparencia u opacidad del material las que hacen que se vea más o menos esta luz de fondo.
Para poder obtener un texto o una imagen del panel LCD, necesitaremos una parte electrónica o controlador que se encargará de traducir lo que queremos representar por una disposición de puntos apagados o encendidos según sea necesario.
Una pantalla LCD es básicamente una matriz (filas x columnas) de puntos o píxeles en un panel de un material (cristal líquido) que tiene unas características que permiten modificar su transparencia aplicándole una corriente eléctrica de la forma adecuada. Normalmente, un panel LCD no emite ninguna luz, sino que se le aplica una luz de fondo (backlight) por ejemplo a partir de un conjunto de LEDs, y son las propiedades de transparencia u opacidad del material las que hacen que se vea más o menos esta luz de fondo.
Para poder obtener un texto o una imagen del panel LCD, necesitaremos una parte electrónica o controlador que se encargará de traducir lo que queremos representar por una disposición de puntos apagados o encendidos según sea necesario.
El dispositivo del que hablamos hoy tiene un controlador que nos permite representar dos líneas de texto con un máximo de 16 caracteres en cada una. El controlador original (HD44780) está fabricado por Hitachi, pero de él se han hecho innumerables copias por parte de otros fabricantes.
De los 8 pines de datos en realidad podemos utilizar sólo los 4 últimos (11 a 14), dado que el dispositivo tiene un modo de funcionamiento en que se mandan los bytes en dos ciclos de escritura.
Aún así, se ve claramente que conectar un display a nuestro Arduino por paralelo es un problema, porque al menos necesitaremos 7 pines de nuestro Arduino (RS, RW, Enable y los 4 bits de datos). Si nuestro montaje ya incorpora otros dispositivos, es muy probable que nos quedemos sin conexiones disponibles, o bien que tengamos que utilizar un Arduino Mega.
De todos modos, si queréis utilizar así el display, lo podéis hacer perfectamente. Para ello, el IDE de Arduino incorpora de serie la librería LiquidCrystal, con lo cual no tenemos que descargar nada adicional.
Este interfaz nos permite controlar un display nada más que con 2 pines (aparte de GND y VCC, claro). Como se puede ver en la imagen, el dispositivo tiene por una cara una hilera de pines que se conecta directamente al bus de 16 pines del HD44780, y por la otra cara tiene 4 pines:
El bus I2C (Inter-Integrated Circuits) es un bus de comunicaciones que nos permite interconectar circuitos integrados mediante un protocolo serie. Este protocolo utiliza la línea SDA para transferir datos y la línea SCL para la señal de reloj.
Como ya se dijo en el artículo sobre Arduino, hay ciertos puertos que tienen un propósito específico, y este es el caso para el bus I2C. Para conectar el interfaz al Arduino, necesitaremos utilizar forzosamente los puertos A4 y A5 del Arduino a los pines SDA y SCL respectivamente.
Además, si queremos utilizar esta configuración, tendremos que utilizar las siguientes librerías:
Por otra parte, pagando un poquito más os lo podéis comprar con el interfaz I2C incluido por 2,12$ en este otro enlace (que es el que yo compré).
Conexiones
El controlador HD44780 tiene un conexionado paralelo a base de 16 pines, de los cuales se muestra su función a continuación. Paralelo quiere decir que tanto los datos como los comandos se mandan byte a byte, no como una secuencia de bits.- Tierra.
- VCC. Alimentación entre 3.3V y 5V.
- Ajuste del contraste.
- Register Select (RS). RS=0 para comandos, RS=1 para datos.
- Read / Write (RW). RW=0 para escribir, RW=1 para leer.
- Enable. Puesto a 1 habilita el display, y a 0 lo inhabilita.
- Bit 0.
- Bit 1.
- Bit 2.
- Bit 3.
- Bit 4.
- Bit 5.
- Bit 6.
- Bit 7.
- Positivo de la luz de fondo.
- Negativo de la luz de fondo.
De los 8 pines de datos en realidad podemos utilizar sólo los 4 últimos (11 a 14), dado que el dispositivo tiene un modo de funcionamiento en que se mandan los bytes en dos ciclos de escritura.
Aún así, se ve claramente que conectar un display a nuestro Arduino por paralelo es un problema, porque al menos necesitaremos 7 pines de nuestro Arduino (RS, RW, Enable y los 4 bits de datos). Si nuestro montaje ya incorpora otros dispositivos, es muy probable que nos quedemos sin conexiones disponibles, o bien que tengamos que utilizar un Arduino Mega.
De todos modos, si queréis utilizar así el display, lo podéis hacer perfectamente. Para ello, el IDE de Arduino incorpora de serie la librería LiquidCrystal, con lo cual no tenemos que descargar nada adicional.
Adaptador serie
Otra posibilidad es la de utilizar un adaptador serie que nos permita controlar el display mediante el protocolo I2C.Este interfaz nos permite controlar un display nada más que con 2 pines (aparte de GND y VCC, claro). Como se puede ver en la imagen, el dispositivo tiene por una cara una hilera de pines que se conecta directamente al bus de 16 pines del HD44780, y por la otra cara tiene 4 pines:
- GND.
- VCC.
- SDA.
- SCL.
El bus I2C (Inter-Integrated Circuits) es un bus de comunicaciones que nos permite interconectar circuitos integrados mediante un protocolo serie. Este protocolo utiliza la línea SDA para transferir datos y la línea SCL para la señal de reloj.
Como ya se dijo en el artículo sobre Arduino, hay ciertos puertos que tienen un propósito específico, y este es el caso para el bus I2C. Para conectar el interfaz al Arduino, necesitaremos utilizar forzosamente los puertos A4 y A5 del Arduino a los pines SDA y SCL respectivamente.
Además, si queremos utilizar esta configuración, tendremos que utilizar las siguientes librerías:
- Wire (incluído en el IDE de Arduino).
- LiquidCrystal_I2C (fmalpartida).
Precios
Si queremos utilizar el display tal cual, sólo con el controlador paralelo, podemos comprarlo en Aliexpress por 1,44$ en este enlace.Por otra parte, pagando un poquito más os lo podéis comprar con el interfaz I2C incluido por 2,12$ en este otro enlace (que es el que yo compré).
No hay comentarios:
Publicar un comentario