Hola, hoy explicaremos la conexión de arduino a lcd i2c. Este tipo de pantallas son muy útiles en nuestros proyectos cuando necesitamos mostrar mensajes o datos y queremos prescindir de tener que tener conectado nuestro ordenador y pantalla haciendo así nuestro montaje totalmente independiente y portable.
Además de ser muy económicos como puedes ver aquí: LCD I2C 16×2, suelen venir incorporados en muchos kit arduino.
Existen muchos modelos de pantallas LCD que podemos conectar a nuestro arduino, las diferencias fundamentales las podemos ver en el tamaño y el tipo de conexión. En este post vamos a usar una pantalla de texto alfanumérico, pero también las hay gráficas y a color con lo que podremos cubrir todo tipo de necesidades en nuestros proyectos.
Conexión de arduino lcd I2C.
La pantalla lcd que vamos a usar, se conecta por bus I2C, este tipo de conexión es de tipo serie y tiene muchas ventajas con respecto a hacerlo en conexión paralelo. La principal es que con solo 4 conexiones podemos comunicarnos con la pantalla lcd, al hacerlo en paralelo necesitaríamos usar 8 puertos de nuestro arduino y con el I2C solamente 2 + 2 de alimentación.
En el sistema de comunicación por I2C, un micro actua como maestro y se comunica con el resto de periféricos como esclavos compartiendo las conexiones marcadas como SDA y SCL, el maestro manda el dato por el bus y la dirección del periférico al que va destinado. Por eso, cada periférico (pantalla, sensor,…) solo pueden tener una dirección única para que no haya conflicto.
En la parte posterior de la pantalla lcd i2c, podremos ver el adaptador paralelo-I2C que viene normalmente soldado a la pantalla. En él podemos ver las 4 conexiones necesarias con el arduino, un potenciómetro para regular el contraste de la lcd, y en la parte inferior del potenciómetro unos contactos (pads A1 A2 A3) con el que podríamos cambiar la dirección asignada de la pantalla en caso de que hubiese conflicto con otro modulo conectado. Por defecto estas pantallas suelen venir con la direccion 0x3F o 0x27 y no es necesario modificar nada.
Como podemos ver, las conexiones necesarias entre la pantalla lcd i2c y el Arduino son:
- SDA – A4
- SCL – A5
- VCC – +5v
- GND – GND
En Arduino Uno, Nano y Mini Pro, SDA es el pin A4 y el SCL el pin A5. Para otros modelos de Arduino consultar en el fabricante.
Programacion de lcd I2C con Arduino
Una vez conectado nuestro arduino y lcd i2c, vamos a ver como programarlo para poder usarlo en nuestros proyectos.
Serán necesarias dos librerias que tendremos que instalar en nuestro IDE de arduino:
- Wire.h (para usar el bus I2C)
- LiquidCrystal_I2C.h (para uso del LCD I2C)
Existen muchas librerias parecidas, yo os recomiendo instalar estas que me han funcionado bien. Para ello en el IDE tenéis que ir al gestor de librerías dentro del menú Programa–Incluir libreria–Gestionar libreria. En versiones antiguas del IDE de Arduino no existe así que es recomendable actualizarse de vez en cuando.
Vamos ahora con el código de ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
/* Prueba LCD I2C 16x2 caracteres ****** Yomaker.com 2017 ***** */ #include <Wire.h> // libreria necesaria para bus I2C #include <LiquidCrystal_I2C.h> // libreria necesaria para display I2C LiquidCrystal_I2C lcd(0x27,16,2); // configuramos el LCD en la direccion de bus I2C que es // 0x27 y el tamaño columnas x filas 16x2 void setup() { lcd.init(); // initialza el lcd lcd.backlight(); // enciende la luz de fondo del display lcd.setCursor(0,0); // apuntamos el cursor a la primera fila y primer caracter e lcd.print("hola mundo"); // imprimimos el texto entre "" } void loop() { lcd.setCursor(0, 1); // apuntamos el cursor al primer caracter de la segunda fila lcd.print(millis()/1000); // imprimimos el tiempo transcurrido en segundos lcd.print(" segundos"); // y el texto a continuacion } |
Empezaremos por usar las dos librerias comentadas antes con #include.
En la siguiente línea configuramos nuestro LCD I2C en el que necesitamos saber la dirección I2C (en este caso 0x27) y el tamaño en columnas por filas, en mi caso tengo uno de 16×2:
1 2 |
LiquidCrystal_I2C lcd(0x27,16,2); // configuramos el LCD en la direccion de bus I2C que es // 0x27 y el tamaño columnas x filas 16x2 |
Los fabricantes de LCD suelen usar las direcciones 0x27 y 0x3F, asi que cambiarla a la otra si no os funciona a la primera. En el caso de que ninguna de las dos funcionase, intentar averiguarlo a través del fabricante.
en el setup(), como viene explicado en los comentarios, inicializamos el lcd, encendemos la iluminación de fondo, apuntamos el cursor a la primera linea e imprimimos «hola mundo». Todo esto como lo hacemos solo una vez, lo pongo en setup().
en la funcion loop(), vamos a usar la segunda línea del display y vamos a imprimir el tiempo en segundos transcurrido desde que conectamos nuestro arduino:
1 2 3 4 5 6 7 8 |
void loop() { lcd.setCursor(0, 1); // apuntamos el cursor al primer caracter de la segunda fila lcd.print(millis()/1000); // imprimimos el tiempo transcurrido en segundos lcd.print(" segundos"); // y el texto a continuacion } |
con la primera instrucción apuntamos a la fila inferior del display 1, (la primera es la 0), luego con millis() nos da los milisegundos transcurridos desde que se encendió el arduino, esto se va actualizando automáticamente por lo que solamente con llamar a la función, nos devuelve el tiempo. Como son milisegundos los dividimos por 1000 para pasarlos a segundos.
En la última linea, añadimos el texto segundos que se imprimirá a continuación del tiempo ya que el cursor del display se desplaza al final de lo que hemos imprimido antes.
Una vez cargado nuestro código en el arduino podremos verlo funcionar asi:
La verdad es que una pantalla de este tipo queda muy bien en cualquier proyecto y, por el precio tan bajo que tiene, (poco mas de 2€), vale la pena incorporarla.
Hay kits Arduino que ya la llevan como este: >>Kit arduino recomendado
Puedes ver un artículo sobre este kit aqui.
o también las puedes comprar sueltas como esta: >>LCD I2C 16×2
Espero que montes pronto tu display lcd en tu arduino y me lo cuentes en los comentarios
Saludos makers!!

Recibe los artículos directamente en tu email el día de la publicación.
Garantía 100% libre de spam.
Superclaro
He encontrado muchos tutoriales sobre LCD´S pero este es el mas estructurado y didactico que he visto y no hace falta liarse mucho para eso
Te felicito
Muchas gracias Octavio.
Hola
HE comprado una pantalla LCD soldada a un chip de I2C (https://www.amazon.es/gp/product/B01E4YUT3K/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1)
He seguido tu tutoría, instalando el paquete LiquidCrystal_I2C.h pero cuando ejecuto el ejemplo, se ilumina el lcd pero no muestra ningún texto
Tengo una placa mega2560 r3..
Gracias de antemo!!
Un saludo
mira a ver si tienes el contraste del LCD a tope o apagado. Mueve un poco el potenciómetro que lleva a ver…