Vamos a ver cómo realizar el montaje, la configuración y puesta en marcha de este conversor LCD I2C con la placa Arduino y un LCD de 2×16, también veremos cómo configurar otro tipo de LCD con diferente disposición de filas y caracteres. Este módulo es uno de los proyectos que más le cuesta a los aficionados de Arduino poner en marcha, todo se debe a las diferentes variantes de módulos e incluso de librerías y configuraciones que existen, aprovechando que en ElectroHobby disponemos de todos los materiales vamos a poner en marcha este montaje de forma fácil y explicado paso a paso.
El módulo conversor I2C LCD
Como su nombre indica, sirve para manejar un LCD con solo 2 hilos mediante el protocolo de comunicación I2C.


Está basado en el integrado PCF8574P que es un expansor remoto de 8 bit’s de entradas/salidas digitales por comunicación I2C. En el mercado hay muchas variantes de este módulo y todas tienen sus cambios, no solo a nivel hardware si no también a la hora de realizar la configuración de la librería.

Este modelo en concreto incorpora todos los componentes necesarios para un óptimo funcionamiento: led indicador de alimentación, potenciómetro para el control de contraste, transistor y jumper para la conmutación del blacklight.

Zona de puentes para configuración de la dirección de trabajo dentro del bus I2C, zona de pines de alimentación y comunicación con Arduino o microcontrolador, zona de pines para el control, alimentación y comunicación con la pantalla LCD.
La alimentación del módulo es de 3 a 5v y la dirección por defecto dentro del bus I2C es la 0x27, mediante la configuración de los puentes de dirección podemos obtener 8 direcciones diferentes, esto significa que podemos manejar hasta 8 LCD con sus respectivos módulos a través del bus de 2 hilos.
La pantalla LCD
La elegida es de 2×16 que serian dos líneas y 16 caracteres visibles por línea. Simplementecambiando una línea de código de la configuración de la librería podremos usar una de 4×20 u otra disposición de líneas y caracteres.


Este modelo está basado en el controlador HD44780 de Hitachi, es requisito imprescindible para usar las librerías.

Tiene la disposición de conexiones en la parte superior y todas ellas están serigrafiadas con el nombre y uso del pin.

Dispone de retroiluminación de pantalla en azul con los caracteres mostrados en blanco lo que permite una gran visibilidad y un aspecto moderno y elegante.
La librería de programación
para el control LCD que incorpora el IDE Arduino es la LiquidCrystal
Esta versión de la librería no admite la comunicación mediante el protocolo I2C por lo que tendremos que actualizarla con New-liquidcrystal de Fmalpartida, simplemente volcamos y sobrescribimos los archivos existentes dentro de la carpeta arduino/libraries/LiquidCrystal con los que hay dentro de la nueva librería, es importante que copiemos los archivos directamente en el mismo sitio sin crear otras carpetas o directorios, después de esto habrá que reiniciar el IDE Arduino para que cuente con las nuevas librerías. Más adelante, en el apartado de programación veremos cómo configurarla.
En las versiones actuales del IDE Arduino 1.6.x no es necesario sobrescribir, simplemente desde el menu Programa > Include Library > Add .Zip Library… podemos instalarla sin mayor problema, dentro de los archivos que te puedes descargar a continuación tienes la librería en formato .Zip una vez instalada solo tienes que pulsar sobre ella para que te cargue los includes dentro de tu programa, la encontrara al final de la lista donde están las librerías instaladas por el usuario.
Archivos LCD I2C
Libreria, datasheet y ejemplo comentado…
El montaje…
En primer lugar tenemos que unir el modulo con la pantalla mediante soldadura, para ello y con el fin de que podamos reutilizar o sustituir cualquiera de los dos componentes, utilizaremos una tira de 16 pin hembra soldada en la pantalla, es recomendable no usar demasiado estaño, realizar las soldaduras en pines alternados para no sobrecalentar ninguna zona en concreto y revisar que todas las soldaduras queden brillantes, la brillantez indica la ausencia de soldaduras frías que nos pudieran dar luego algún que otro dolor de cabeza por un mal contacto.
Acto seguido prepararemos el cable de conexión de alimentación y comunicación con el bus I2C, como nos gusta hacer las cosas bien y de forma profesional, vamos ha utilizar unas fundas pin 2,54 de dos y cuatro pin, esto limitará los posibles errores de contacto y conexionado a la par que dará un aspecto vistoso, ordenado y robusto a nuestro montaje.
UnoAlimenMegataremos el módulo con los pines +5v y Gnd provenientes de la tarjeta arduino, utilizaremos rojo y negro, colores estándar para esta función.
Para la comunicación necesitamos otros dos hilos, uno verde para SDA y otro amarillo para SCL, que serán datos y reloj respectivamente del bus I2C. Los pines de conexión al bus I2C de la tarjeta Arduino cambian según el modelo que utilicemos, UNO, Mega, Leonardo. El color de estos dos últimos cables no obedece a ninguna norma concreta.
La programación…
La programación y configuración de la librería para el modulo LCD/I2C es bastante sencilla, el ejemplo que se incluye en los archivos está totalmente comentado, línea a línea, lo que hace que sea más fácil la comprensión del uso de las funciones y de la propia configuración, incluso con otro tipo de LCD con diferentes filas o caracteres.
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
Función de configuración del módulo LCD/I2C (Dirección del bus, pin enable, pin rw, pin rs, pines de datos d4-d5-d6-d7, pin control backlight y polaridad) con esta configuración de la función estamos diciéndole la relación de pines con los que trabaja este módulo en concreto, si utilizáramos otro modelo tendríamos que saber a priori cual es la distribución de esos pines.
lcd.begin(16,2);
Función de configuración e inicialización del display LCD, a esta función le tenemos que pasar los datos de nuestro LCD en forma de (caracteres, líneas) por lo que es realmente fácil usar otros tipos de pantalla, por ejemplo para un LCD de 4 líneas y 20 caracteres por línea tendríamos que pasar a la función los datos (20,4).
Sin duda hay muchas más funciones de las que se utilizan en el programa de ejemplo, tanto funciones visuales como de configuración, con lo explicado hasta el momento es más que suficiente para que podamos poner en marcha nuestro montaje independientemente del nivel de conocimientos que tenga cada uno.
Como el proyecto y el resultado obtenido lo merecen pongo un kit completo con todos los materiales que he utilizado en este montaje, como siempre a un precio excelente, «Electrónica para todos los bolsillos.»
Espero que te haya gustado, si es así compártelo en las redes sociales con los botones que tenéis a continuación, gracias de antemano y un saludo.
Hola,no funciona,falla en la línea:
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
Solo tienes que ver el video para darte cuenta que funciona perfectamente, otra cosa es que no te funcione a ti en concreto.
Por el fallo que comentas o la sintaxis de esa línea no la tienes bien escrita o no encuentra la librería “New-liquidcrystal” que deberías tener ya instalada en el directorio correspondiente.
Espero puedas solucionarlo con estas indicaciones, un saludo.
Hola a todos. Acabo de comprar en esta tienda el kit LCD y, después de soldar, hacer la conexiones, instalar la librería, cargar el sketch, etc. sólo se me encendía la retroiluminación, pero no aparecía ningún carácter. Revisé las soldaduras, que parecían perfectas y repasé la de Vss, Vdd y V0, y funcionó perfectamente. Gracias a Electrohobby por los tutoriales y encantado con su tienda y productos. Saludos.
Hola amigos,
me sale el mismo error que a Tomás
ElectroHobby_I2C_LCD:28: error: ‘LiquidCrystal_I2C’ does not name a type
ElectroHobby_I2C_LCD.ino: In function ‘void setup()’:
ElectroHobby_I2C_LCD:39: error: ‘lcd’ was not declared in this scope
ElectroHobby_I2C_LCD.ino: In function ‘void loop()’:
ElectroHobby_I2C_LCD:61: error: ‘lcd’ was not declared in this scope
ok ya está, todo correcto, he sobreescrito en la biblioteca LiquidCrystal.
reiniciar arduino y en marcha.
gracias por todo
Perfecto, me alegro que te funcione, gracias por explicarnos el error.
Hola, recibo este error al compilar el ejemplo.
Arduino: 1.5.3-Intel.1.0.4 (Windows NT (unknown)), Board: «Intel® Edison»
C:\Users\carloscharx\Documents\Arduino\libraries\LiquidCrystal\FastIO.cpp: In function ‘void fio_shiftOut1(fio_register, fio_bit, uint8_t, boolean)’:
C:\Users\carloscharx\Documents\Arduino\libraries\LiquidCrystal\FastIO.cpp:214:19: error: ‘_BV’ was not declared in this scope
if(value & _BV(i))
^
He sobrescrito las librerías y reiniciado arduino, ¿ qué puede estar mal?
Un saludo
En principio el problema te lo da con la libreia, se que funciona en UNO y Mega pero tu tienes seleccionada la placa Edison, luego también veo que el IDE que tienes instalado es el beta.
Probado en Arduino UNO y ahí si que va, muchas gracias, un saludo!
Desde que hablamos la ultima vez Arduino a liberado su IDE 1.6 compatible con todas las placas y es una versión estable, podrias volver a probar haber si ahora te deja con tu Edison.
Gracias a ti, un saludo.
Hola buenas,
Me gustaría saber si existe un kit similar a la venta para una LCD 4×20.
Gracias!!
No hay un kit para la LCD de 4×20 pero en la tienda tienes todo lo que necesitas, incluida esa LCD, lo unico que no esta a la venta todavía son las fundas pin, si te decides a comprar los elementos sueltos mándame un mensaje para que añada las fundas de regalo. Un saludo.
Hola, quisiera saber como colocar la libreria.
Le tengo que cambiar el nombre: por ejemplo se llama «LiquidCrystal», tengo que ponerle «NewLiquid Cristal»
Parece que no te has leido el post…
Tienes que sobrescribir los archivo existentes dentro de LiquidCrystal con los archivos que hay dentro de la libreria nueva.
Buenas, estoy probando con el ejemplo del post y el parpadeo del encendido lo hace bien. El problema surge cuando tiene que aparecer el texto… No sale nada. He probado a modificar el potenciómetro por si fuera problema de la iluminación de la pantalla, pero tampoco. El caso es que al compilar el código no da ningún error. ¿Alguna idea de cuál puede ser el problema?
hola. yo me pasava lo mismi y regulando el ptenciometro han salido las letras , te aseguro que tambien me estaba volviendo loco . pero al final era eso
Para este tutorial, utilizaremos un LCD 16 2 , aunque se podria hacer casi igual con un 16 4, y una placa para la conexion de este por I2C. Aunque esta placa la podriamos hacer nosotros, actualmente las venden hechas y a un precio muy competente, asi que nos facilita mucho las cosas adquirir una en vez de hacerla.
Buenas, estoy intentando poner en marcha el kit LCD, y tras cargar la librería LiquidCrystal y el ejemplo descargado, incluso comprobar al existencia de la librería de Wire, me sale el siguiente error al compilar:
C:\Users\Juan Miguel\Documents\Arduino\libraries\LiquidCrystal\I2CIO.cpp:35:26: fatal error: ../Wire/Wire.h: No such file or directory
#include
^
compilation terminated.
exit status 1
Error compilación en tarjeta Arduino/Genuino Uno.
Alguien me puede decir que estoy haciendo mal.
Un Saludo,
Finalmente solucioné mi problema usando esta librería:
https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
Para informaros: Uso Windows 10 64bit
alguien que sepa donde puedo conseguir un i2c
Lo tienes en nuestra tienda:
https://www.electrohobby.es/es/lcd/136-modulo-lcd-i2c.html
También el kit completo:
https://www.electrohobby.es/es/montajes/138-kit-lcd-i2c.html
No me dibuja el texto…me compila y parpadea la pantalla todo perfecto pero…no me dibuja el texto!!!! Qué puede ser?????
hola me pasa lo mismo que a nestor rodo perfecto pero no imprime texto en la pantalla.he revisado las conesiones y todo ok menos que no se ve el texto.
. alguna idea? gracias