Conectar un display LCD Hitachi a Arduino por bus I2C


arduino-lcd-i2c

¿Qué es un controlador LCD I2C?

El controlador de LCD I2C es un dispositivo que nos permite controlar una pantalla a través del bus I2C, usando únicamente dos cables.

En esta entrada aprendimos a manejar un display LCD Hitachi con controlador HD44780, una familia de pantallas barata y sencillas de emplear.

Pero usar esta pantalla directamente desde Arduino requería emplear una gran cantidad de pines de Arduino, lo que supone un enorme desperdicio de recursos, que deberían estar ocupados en cosas mucho más importantes que encender un simple display.

Una alternativa recomendable es usar un controlador que permita acceder al LCD a través del bus I2C. Este controlador LCD I2C puede conectarse a cualquier LCD Hitachi HD44780 y reduce la cantidad de cables necesarios a dos.

Anuncio:

Internamente el controlador LCD I2C es una variación del extensor de entradas y salidas digitales PCF8574, especialmente adaptado para pantallas LCD Hitachi HD44780. Incluso incorporan un potenciómetro para regular el backlight del LCD.

El controlador LCD I2C normalmente se entrega por separado, en cuyo caso tendremos que soldarlo al display LCD.

Precio

El controlador I2C para un LCD Hitachi es un componente barato. Podemos encontrarlo por 0.60€, en vendedores internacionales de AliExpress o eBay.

arduino-i2c-lcd-controlador

También es posible comprarlo de forma conjunta con el LCD. No hay ahorro significativo en comprarlos de forma conjunta, por lo que el precio resulta la suma del LCD + controlador.

Por tanto, el precio final de un LCD I2C de 16 caracteres y dos líneas 16×2 (LCD1602) queda en torno de 1.70€, y el de 20×4 (LCD2004) uno de 20 caracteres y 4 lineas unos 4.20€.

arduino-i2c-lcd-componente

Esquema montaje

La conexión es sencilla, simplemente alimentamos el módulo desde Arduino mediante GND y 5V y conectamos el pin SDA y SCL de Arduino con los pines correspondientes del controlador LCD I2C.

arduino-lcd-i2c-esquema

Mientras que la conexión vista desde el lado de Arduino quedaría así.

arduino-lcd-i2c-conexion

En Arduino Uno, Nano y Mini Pro, SDA es el pin A4 y el SCK el pin A5. Para otros modelos de Arduino consultar el esquema patillaje correspondiente.

Ejemplos de código

Para poder usar una pantalla LCD I2C emplearemos la librería LiquidCrystal_I2C, disponible en este enlace.

El uso es similar a la librería LiquidCrystal convencional. El siguiente sketch muestra el uso de las funciones de la librería para mostrar los textos “Linea 1” y “Linea 2” en una pantalla de 16×02.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);  // Inicia el LCD en la dirección 0x27, con 16 caracteres y 2 líneas

void setup()
{
	lcd.begin();                      
	lcd.backlight();
	lcd.setCursor(0, 0);
	lcd.print("Linea 1");
	lcd.setCursor(0, 1);
	lcd.print("Linea 2");
	delay(2500);
	lcd.clear();
}

void loop()
{
}
Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección Tutoriales de Arduino

Descarga el código

Todo el código de esta entrada está disponible para su descarga en Github.



4 8 votes
Article Rating

Anuncio:

Previous El bus I2C en Arduino
Next Controlar motores de corriente continua con Arduino y L298N
16 Comments
oldest
newest
Inline Feedbacks
View all comments
Jose Del Castillo
6 years ago

La direccion no siempre es 0x27, tener cuidado con eso

Adrian
4 years ago

¿Qué direccion sería?

luisllamas
6 years ago

Tienes toda la razón, ya está corregido
Muchas gracias por el aviso!!!

Felipe
5 years ago

Hola Luis, tengo un error con la librería LiquidCrystal_I2C.h ya que no me deja importarla desde el enlace que has adjuntado. Espero respuestas.Gracias

luisllamas
5 years ago
Reply to  Felipe

No entiendo que problema tienes, el enlace funciona perfectamente.

luisllamas
5 years ago

Asegúrate de que has bajado la librería desde el enlace, e instalado manualmente.
Hay más de una librería llamada igual, y el instalador de librerías del IDE de Arduino hace de las suyas (incluso las confunde).

Marquetalia UTF
5 years ago

Hola Luis. Por qué me sale este error?.
exit status 1
no matching function for call to ‘LiquidCrystal_I2C::begin()’

luisllamas
5 years ago

Lee la respuesta a William, justo debajo 🙂

Stockmanns
5 years ago

Buenas, tengo un problema y es que me anda lcd.backlight() y lcd,noBacklight solamente. Entonces lo unico q puedo hacer es prender y apagar la pantalla no me anda para escribir nada

sergio
5 years ago

perfecto muchas gracias

Pantalla LCD I2C en Arduino | Aprendiendo Arduino
4 years ago
Darìo
4 years ago

Muchas gracias Luis!! Probé con varios tutoriales y sólo con el tuyo logré que funcione!

Leo
2 years ago

Muchas gracias por todo. Últimamente vivo en esta página. Un saludo

Francisco
1 year ago

Hola He visto este articulo y aunque a lo mejor no sea el lugar correcto quisiera hacer la siguiente consulta. Tengo un sinte con la pantalla Lcd grafica estropeada y no hacen repuestos. Es un fallo ampliamente reportado de fabrica. Todo ello hace que sea imposible usarlo ya que todos los ajustes estan ahi. Es un Roland juno g. La resolucion es un tanto peculiar de 240×96 px asi como el protocolo, es de 8bit y usa señales xlcdwe lcdrs y xlcdcs1 y 2. Mi pregunta es ¿se podria reconvertir/usar las señales para otra lcd o incluso convertirla en HDMI,… Read more »