Proyecto 30 – LCD 1602 + módulo I2C

En el proyecto anterior vimos como conectamos una pantalla LCD por el método de 4 bits, vimos que se utilizan un total de 6 pines del Arduino para conectar nuestra pantalla, en este proyecto vamos a utilizar el módulo I2C, que irá conectado a la pantalla y la controlaremos por medio de esta interfaz que usa solo dos pines de nuestro Arduino (SDA, SCL).

Pantalla LCD 1602 + módulo I2C
Pantalla LCD 1602 + módulo I2C

¿Qué es el módulo I2C?

El módulo I2C es una interfaz de comunicación serial que utiliza el protocolo I²C para controlar una pantalla LCD de una forma más sencilla, al solo utilizar dos pines para comunicarse con nuestro Arduino, lo cual nos deja más pines del Arduino libres para usarlos en con otros sensores.

Este módulo tiene un chip I²C PCF8574 cuya función es la de convertir los datos en serie I²C en datos paralelos para que puedan ser leídos por la pantalla LCD, funciona tanto en pantallas LCD 1602 como en LCD2004.

Módulo I2C

Por defecto el este módulo tiene la dirección 0x27 (también puede ser la 0x3F ), esta dirección puede ser cambiada con los pines A0, A1 y A2 que posee el módulo.

Este módulo puede trabajar en las siguientes direcciones (0x20 ~ 0x27); un total de 8 display LCD pueden ser conectados en el mismo bus I2C de 2 cables, teniendo cada placa una dirección diferente.

Cambio de dirección módulo I²C

Componentes

  • Arduino UNO o placa compatible
  • Protoboard o placa de pruebas
  • LCD 1602
  • Interfaz I2C para LCD
  • Cables o Jumpers

A las pantallas LCD1602 y LCD2004 se les puede conectar el módulo I2C, ya que el módulo es compatible con estas dos pantallas y se usa de igual manera, la diferencia es que en el código de inicialización de la pantalla se debe especificar las líneas y columnas de la pantalla a utilizar.

Para este proyecto debemos tener ya soldado o conectado el módulo i2c a la pantalla de cristal líquido.

esquematicoLCD1602-I2C
Esquemático de conexiones LCD1602 con módulo I2C

La siguiente tabla es la distribución de las conexiones entre la pantalla y nuestro Arduino, utilizando Los pines del módulo I2C:

Pin módulo I2CPin Arduino
GNDGND
VCC+5V
SDAA4
SCLA5
Tabla de conexiones entre el Módulo I2C y el Arduino

Código

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

LiquidCrystal_I2C lcd(0x27, 16, 2); 

void setup()
{
  lcd.init();
  lcd.backlight();
}

void loop()
{
  lcd.setCursor(3,0);
  lcd.print("Visit Now!");
  lcd.setCursor(1,1);
  lcd.print("www.acortes.co");
  delay(400);
  lcd.clear();
  delay(200);
}

Explicación del código

Este es el mismo ejemplo del proyecto anterior pero adaptado para el módulo I2C, comenzaremos a revisar el código, primero vamos hacer la declaración de las variables.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>       //instalar liquidCrystal I2C Frank de Brabander

LiquidCrystal_I2C lcd(0x27, 16, 2);  //Establece la direccion I2C del LCD 0x27, 16 caracteres y 2 lineas

Lo primero que vemos en esta parte del código es que incluimos la librería Whire.h que es la encargada de realizar la comunicación I2C, luego encontramos que incluimos también la librería LiquidCrystal.h, que es la librería que se va a encargar de controlar nuestro módulo I2C para que maneje el LCD. Esta librería la debemos agregar ya que no es una librería estándar de Arduino, cuando la busquemos instalemos el creado por Frank de Brabander. Por último vemos que declaramos el objeto lcd del tipo LiquidCrystal_I2C, al cual le entregamos la dirección I2C 0x27 (también puede ser 0x3F o si se ha cambiado la dirección como lo muestra la tabla arriba)y le decimos que tiene 16 columnas y 2 filas.

Podemos ver más información de la librería Wire.h aquí y sobre la librería LiquidCrystal.h aquí.

Función setup()

  lcd.init();      //Inicializa la pantalla
  lcd.backlight(); //enciende la luz de fondo

Como hemos visto anteriormente en otros proyectos en el setup ponemos todo lo que debe ser inicializado o ejecutado una sola vez, en nuestro caso encontramos en la primera línea la función init, la cual inicializa la pantalla, luego encontramos la función light que enciende la luz de fondo del display.

Función loop()

lcd.setCursor(3,0);
lcd.print("Visit Now!");
lcd.setCursor(1,1);
lcd.print("www.acortes.co");
delay(400);
lcd.clear();
delay(200);

Comenzaremos revisando el contenido de nuestra función loop, para esto vamos a irlo desglosando un poco, para que sea mas fácil de entender.

lcd.setCursor(3,0);
lcd.print("Visit Now!");

En esta primera línea vemos una función sertCursor que recibe dos parámetros setCursor(columna, fila), donde la columna y la fila se comienzan a contar desde 0, entonces vemos en la primera línea de código en el loop se le entregan los valores 3 y 0, por lo que el cursor se ubicará en la 4 columna y la fila 1 de la pantalla para comenzara a escribir desde ahí, en la siguiente línea se aprecia que le ordenamos a imprimir el texto «Visit Now!», por lo que aparecerá en la pantalla en la posición antes mencionada (columna 4 , fila 1).

lcd.setCursor(1,1);
lcd.print("www.acortes.co");

Ahora localizamos el cursor en la posición 1,1 es decir en la columna 2 y en la fila 2 y luego imprimimos un texto «www.acortes.co» en la pantalla en la posición mencionada anteriormente.

delay(400);
lcd.clear();
delay(200);

Anteriormente vimos que se mostró en pantalla dos líneas de textos, ahora en la siguiere línea encontramos un delay de 400 milisegundos, el cual hace una pausa por ese intervalo de tiempo, luego hay una limpieza de pantalla y finalmente encontramos una delay que hace una pausa de 200 milisegundos antes de volver comenzar de nuevo con el loop.

Resumen

En este proyecto utilizaremos una pantalla de cristal líquido de 16 caracteres por 2 filas para visualizar un texto, el cual se visualizará por 400 milisegundos y desaparecerá por 200 milisegundos, es decir se va a ver de manera intermitente, si miramos es el mismo resultado del proyecto anterior, pero con una ejecución mucho más fácil.


Deja un comentario

Este sitio está protegido por reCAPTCHA y se aplican la política de privacidad y los términos de servicio de Google.