LCD I2C Arduino UNO pantalla 128×64 display
LCD I2C con Arduino UNO y pantalla 128×64
Para empezar, este tutorial tiene la finalidad de utilizar la pantalla LCD 128×64 (LCM12864R) por LCD I2C. En resumen, en conjunto con la interfaz serial LCD I2C para display LCD (que maneja el protocolo de comunicación I2C) y un Arduino UNO. Por lo tanto aprenderás a utilizar este sistema, te recordamos que finalmente, este tutorial es compatible con diferentes pantallas LCDs.
El ejemplo se basa en 2 tipos de bibliotecas, los enlaces a continuación:
- u8glib-master: https://code.google.com/archive/p/u8glib/
- LiquidCrystal_I2C2004V1: http://www.frostcode.es/descargas/LiquidCrystal_I2C2004V1.rar

Pantalla LCD 128×64 (LCM12864) descripción
En primer lugar, esta pantalla es un LCD gráfico, retroiluminado con un contraste variable. Esta pantalla además tiene un color azúl y caracteres blancos. Esto puede cambiar ya sea el modelo de pantalla que tengas. Ten en cuenta las siguientes especificaciones:
- Resolución: 128 pixeles de largo y 64 pixeles de ancho
- Controlador: HJ12864ZW
- Alimentación: 3.3V a 5v con un consumo de corriente de 250mA.
- Luz de fondo: Azul
- Velocidad de datos: 2Mhz
- Pantalla: 3.2″
- Tamaño: 9.3 x 7.0 x 1.0 cm
- Peso: 80g
En la siguiente tabla se muestra la configuración de pines de la pantalla, por lo tanto, es posible que si tienes una pantalla con un modelo distinto la configuración pueda cambiar.

NOTA: si se quiere seleccionar el modo de funcionamiento paralelo conectar el pin PSB a 5V, o en caso de querer utilizarlo en el modo serie conectar a GND.
Interfaz serial I2C IIC para LCD1602
Es un bus de comunicaciones en serie que utiliza dos líneas para la transmisión de información. Resumiendo, una para los datos SDA (pin A4 en Arduino UNO), y otra para la señal de reloj SCL (pin A5 en Arduino UNO). En consecuencia con esta interfaz serial podemos ahorrarnos los pines que se necesitaran normalmente para hacer la conexión de una LCD en Arduino UNO. Además se podrán tener disponibles para otro tipo de conexiones ya sea para sensores o cualquier otro tipo de componentes necesarios.
- voltaje de operación: 5V
- Número de pines: 16
- Dirección I2C: 0X20~0X27
- Para utilizar con Arduino descarga, descomprime y pega la biblioteca Liquid Crystal link: https://cdn.shopify.com/s/files/1/0557/2945/files/LiquidCrystal_V1.2.1.zip?1490
Materiales para tutorial
- Pantalla LCD (128×64)
- Interfaz I2C IIC para LCD1602
- Arduino UNO
- Jumpers macho-macho y macho-hembra
- Protoboard
Diagrama de conexiones I2C LCD
Finalmente, se muestra el diagrama de conexiones. Como resultado, solo estamos haciendo uso de 2 pines en el Arduino. Es posible que tu aplicación necesite los pines digitales para otras aplicaciones. Ten en cuenta que este módulo es muy importante para ahorrar conexiones y además modular el proceso de programación. Especialmente relevante donde requieres las especificaciones previamente mencionadas.

Código:
En conclusión puedes utilizar este módulo LCD I2C en otras pantallas. Además compatible con la clásica pantalla lcd i2c 16×2. Esperamos que te haya gustado este tutorial, ya sea por el interés maker o la temática en particular. finalmente, ten en cuenta que tu apoyo es necesario para seguir generando tutoriales, te pedimos compartir en redes sociales y suscribirte.

Estimado Amigo
Me pareceio muy interesante tu articulo pero entiendo que este adapatador serial esta diseñado para display 16×2. Entonces como podrias dibujar un circulo u otra forma grafica con el display 128×64 con este adaptador??
Saludos
Fz
Felix, tu pregunta ya es muy particular. Solo toma en cuenta que realmente este circuito es un convertidor de I2C a paralelo. Entonces los comandos de tu pantalla no cambian solo es que los empaquetas en I2C. Saludos.
Yo cuento con un display 16×4 y no logro que el cursor inicie en la 3 o 4 linea
podrias explicar por que las lineas saltan a tu inicio de linea por que en mi display me sobrepone el inicio de una linea con el final de otra
lcd.setCursor(0,0); // este es el home igual que para mi display
lcd.setCursor(-3,2); // esta no es mi inicio de 2 linea es como el caracter 14 de la 1 linea
lcd.setCursor(10,4);
lcd.setCursor(7,3);
creo que tiene que ver con la cantidad de caracteres pero no entiendo bien la nomenclatura pongo 0,2 ó 0,3 como veo en otros tutoriales pero el cursor no salta al inicio de mi linea
hola me ha pasado un problema al compilar tu código, he descargado las librerias y se muestran de diferente color que quiere decir que si las reconoce pero me manda el error de abajo quisiera saber si te topaste con este problema que me esta retrasando mi proyecto y ya le busque por muchos lados gracias.
In file included from C:\Users\Win10\Desktop\VAEC PIEDRAS NEGRAS\arduino programacion\armando_2k\armando_2k.ino:2:0:
C:\Users\Win10\Documents\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.h: In function ‘void setup()’:
C:\Users\Win10\Documents\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.h:154:9: error: ‘int LiquidCrystal_I2C::init()’ is private
int init();
^
armando_2k:11: error: within this context
lcd.init(); //inicializacion de la pantalla
^
Se encontraron múltiples librerías para «Wire.h»
Usado: C:\Users\Win10\Desktop\arduino-nightly\hardware\arduino\avr\libraries\Wire
No usado: C:\Users\Win10\Documents\Arduino\libraries\Wire
Usando librería Wire con versión 1.0 en la carpeta: C:\Users\Win10\Desktop\arduino-nightly\hardware\arduino\avr\libraries\Wire
Utilizando biblioteca LiquidCrystal en carpeta: C:\Users\Win10\Documents\Arduino\libraries\LiquidCrystal (legacy)
exit status 1
within this context
Buenas noches, y si no me aparece nada en la pantalla debería de conectar el pin PSB a 5V?
Gracias por el aporte.
Hola Javier, el pin PSB debería de ser conectado a GND para su funcionamiento en serie, o en 5v para paralelo, saludos.
Que tal no se ve nada en mi pantalla y ya cheque todo
Gracias por el tutorial la Interfaz I2C IIC hace mas sencillo conectarlo pero tengo un problema, cuando lo conecte y cargue el código no me aparece nada en la pantalla, ya revise la conexión y el código todo parece bien ¿Como lo arreglo ?
Daniel, te recomiendo primero probar la configuración del I2C, revisa que si detecte el módulo y revisa la dirección del mismo, puedes usar un I2C Scanner como este: https://playground.arduino.cc/Main/I2cScanner
si funcionaria con el glcd HJ12864ZW??? xq se me queda en blanco la pantalla o necesariamente debe de ser la LCM12864R
Daniel, si te funciona, ten en cuenta que este módulo I2C es un convertidor serial a paralelo por lo que si es compatible.
hola a todos yo hice todo y funciona pero no 100% en cada parte donde escribo solo sale la primera letra alguien
me puede ayudar de ante mano gracias a todo los que hicieron esto posible………
no funciona con esta librería el el código que presentas da ese error, no se si tu tienes otra versión de la esta libreria
Perdon, no he puesto el error. no reconoce lcd.init
lcd.begin
es posible que el escaneador reconozca dos dispositivos I2C?
Si, si es posible siempre y cuando tengan direcciones distintas.
Con la nueva libreria hay que remapear los pines en LiquidCrystal_I2C:
#define EN 2
#define RW 1
#define RS 0
#define D4 4
#define D5 5
#define D6 6
#define D7 7
Yyy agregar esta linea al codigo de arduino para controlar el led backlight
LiquidCrystal_I2C lcd(0x27,3,POSITIVE);
hola, mi pregunta es, esto funciona con arduino nano?
Hola, si sería posible, aunque no hemos hecho la prueba. Solo tendrias que buscar cuales pines son el I2C en el arduino nano y hacer las conexiones de esa forma.
no me funciona le agregue el tamaño del display pero no vusualiza nada
#include ;
#include ;
//0x27 esla direccion I2C comunmente arduno detecta la interfaz, en caso de no funcionar
//la pantalla intentar con a direccion 0x20
LiquidCrystal_I2C lcd(0x27,16,4); //16,4 es el tamaño de la pantalla.
no me funciona le agregue el tamaño del display pero no vusualiza nada
#include ;
#include ;
//0x27 esla direccion I2C comunmente arduno detecta la interfaz, en caso de no funcionar
//la pantalla intentar con a direccion 0x20
LiquidCrystal_I2C lcd(0x27,128,64); //16,4 es el tamaño de la pantalla.
Lo que publicaste no funciona. en el título especificó la pantalla lcd12864 conectada mediante un adaptador lcd i2c, es engañoso, el diagrama/conexiones lcd12864 y el módulo lcd i2c no funcionan sin una biblioteca exacta. Sea explícito y envíe la biblioteca correcta para i2c-lcd12864.