La pantalla LCD de 2×16 basada en el controlador HD44780 de Hitachi es un periférico muy común, que se utiliza ampliamente en proyectos con Arduino y microcontroladores en general, sin embargo, es bien sabido por todo aquel entusiasta que ha incluido una en sus proyectos, que este tipo de pantalla requiere muchos pines del microcontrolador para ser controlada, debido principalmente a que utiliza un bus paralelo para comunicarse. Afortunadamente existe una solución muy fácil y económica para este problema: un adaptador basado en el PCF8574 que permite conectar la pantalla al Arduino usando solamente dos líneas digitales a través del bus I2C. Dichos pines, pueden además ser compartidos por otros periféricos como el RTC o memorias EEPROM. En este artículo te explicamos como utilizar una pantalla LCD 2×16 por I2C con Arduino de manera que puedas aprovechar mejor tus pines de I/O.
Materiales Necesarios
Los materiales para esta experiencia pueden encontrarse en nuestra tienda, hace falta un poco de soldadura para poner a punto la pantalla con el adaptador I2C o puede solicitarnos el display con el modulo ya soldado:
Pantalla LCD 16×2 compatible con HD44780 |
Arduino UNO R3 |
Cables tipo Dupont Macho-Hembra |
Adaptador LCD I2C PCF8574 |
Preparación de la pantalla con el adaptador I2C
Para usar nuestra pantalla LCD 2×16 por I2C con Arduino el primer paso es soldar el adaptador I2C en la parte de trasera de la pantalla. Al finalizar la soldadura, nuestro adaptador debe verse de la siguiente manera:
Como se aprecia el adaptador para LCD 2×16 por I2C con Arduino nos permite ahorrar bastante tiempo en las conexiones, pues ya incluye el potenciómetro para regular el contraste de la pantalla. También incluye todo lo necesario para el funcionamiento del backlight (retro-iluminación), pudiendo incluso controlar esta función a través de software. Si no queremos soldar el adaptador a la pantalla, podemos utilizar un protoboard para realizar la conexión entre ambas piezas, tal como se muestra a continuación.
Diagrama para conectar el LCD 16×2 por I2C
Una vez que tenemos soldado el adaptador I2C, hay que identificar los pines de I2C en la tarjeta Arduino que estemos usando. En el Arduino UNO, los pines del bus I2C corresponden con los analógicos A4 y A5. También los encontramos duplicados en la parte superior, cerca del conector USB y se etiquetan como SDA y SCL (por la parte de abajo del PCB).
Las conexiones se realizan de la siguiente forma con el Arduino, como podemos ver estamos usando los pines analógicos A4 y A5, aunque también se puede conectar a SDA y SCL cerca del conector USB:
Librería para LCD 2×16 por I2C con Arduino
Para usar el LCD 16×2 por I2C con Arduino es necesario también agregar una librería a nuestro IDE, de forma que este sepa como comunicarse con el chip PCF8574.
Puedes solicitar la librería y el ejemplo de este tutorial mediante el formulario de contacto aquí.
La librería LiquidCrystal_I2C dispone de métodos similares (algunos idénticos) a los de la librería oficial.
-
LiquidCrystal_I2C() –
Constructor de la clase, configura el hardware.
-
init() –
Prepara el LCD para su uso.
-
clear() –
Borra todos los caracteres de la pantalla LCD.
-
setCursor(col, row) –
Permite mover el cursor a la posición indicada en sus parámetros.
-
print() –
Imprime una variable o literal en la pantalla
-
scrollDisplayLeft() y scrollDisplayRight() –
Recorre el contenido de la pantalla a la izquierda o a la derecha
-
backlight() y noBacklight() –
Métodos para encender / apagar la iluminación de fondo
-
createChar(num, data) –
Crear un carácter definido por el usuario en la memoria del controlador de pantalla