Acerca del proyecto
En este post vamos a conocer le modulo lcd i2c conectado a Arduino, este mismo proyecto lo trabajamos en post pasados donde conectamos el modulo lcd directamente al controlador, pero con este adaptador vamos a tener un ahorro de pines ya que trabaja con el protocolo ic2 para la comunicación y de 7 pines que usamos en la conexión directa, vamos a reducir a solo 2 pines.
Vamos a a perder a usar este modulo y conocer la librería creada en arduino para poder controlarlo, conoceremos como configurar la comunicación i2c que permitirá realizar la programación del modelo sin tanta complicación
Conocimiento previo
Para realizar este proyecto se requiere conocimiento previo de los siguientes temas, si aun no has trabajado con lo que se menciona en la siguiente tabla, allí están los links a los post para que puedas dar un repaso adicional o puedas recordar el conocimiento necesario para poder realizar este proyecto.
Proyecto | Descripción |
---|---|
LCD 2x16 | Display LCD de 16 caracteres x 2 lineas. Posee el controlador SPLC780D1 o equivalente (como HD44780), el más usado en este tipo de dispositivo. Backlight azul. |
Arduino lcd 2x16 | En este post vamos a ver un ejercicio sencillo de arduino lcd 2x16 en donde veremos lo que se puede visualizar en 2 filas y 16 columnas, además de mostrar letras y números. |
Arduino lcd 2x16 | Vamos a conocer el módulo interfaz para la pantalla LCD donde podremos utilizar solamente dos Pines para la comunicación entre cualquier microcontrolador y esta pantalla. En este post veremos sus principales características la forma de la conexión y y como conocer y utilizar el direccionamiento del bus i2c. |
LiquidCrystal i2c | Conoceremos la librería con la que trabajaremos el modulo lcd i2c conectado al arduino, esta librería esta diseñada solo para el entorno de adruino; veremos cuales son las funciones, métodos que podemos usar para escribir mensajes en este tipo de pantallas. |
Modulo lcd i2c
La pantalla LCD de 16×2 basada en el controlador HD44780 de Hitachi es un periférico muy común, el problema es que este tipo de pantalla requiere muchos pines del microcontrolador para ser controlada, por esto se crea un adaptador basado en el PCF8574 que permite conectar la pantalla al arduino usando solamente dos lineas digitales a través del bus I2C. Dichos pines, pueden además ser compartidos por otros periféricos como el RTC o memorias EEPROM ente otros.
Direcciones de bus del i2c
El módulo de conversión lcd i2c cómo realiza este tipo de comunicación en el bus necesita una dirección para poder acceder a él y enviar la información necesaria para visualizar datos en la pantalla, como vimos anteriormente está basado en el chip PCF8574 el cual dependiendo de la versión del fabricante puede comenzar con una u otra dirección, esto lo podemos identificar con la siguiente tabla:
A0 | A1 | A2 | PCF8574 | PCF8574A |
---|---|---|---|---|
0 | 0 | 0 | 0X27 | 0X3F |
0 | 0 | 1 | 0X26 | 0X3E |
0 | 1 | 0 | 0X25 | 0X3D |
0 | 1 | 1 | 0X24 | 0X3C |
1 | 0 | 0 | 0X23 | 0X3B |
1 | 0 | 1 | 0X22 | 0X3A |
1 | 1 | 0 | 0X21 | 0X39 |
1 | 1 | 1 | 0X20 | 0X39 |
Para el modulo que estamos trabajando, es el PCF8574A, así que usaremos las direcciones correspondientes, por defecto debemos colocar la 0X3F, ya que los pines de dirección se encuentran es un estado lógico 0.
Materiales
Los materiales con los que deben trabajar esta en la siguiente tabla, allí se explican la función de cada uno de ellos
Material | Cantidad | Descripción |
---|---|---|
Arduino | 1 | Controlador del circuito |
Modulo lcd 2x16 | 1 | Modulo lcd para visualizar |
Modulo lcd i2c | 1 | Adaptador del lcd 2 x 16 |
Cables de conexión | 4 | Cables para conectar los módulos |
Circuito
Conexión del modulo al lcd es fácil de realizar, esta diseñado para que coincida con el orden de los pines del modulo con el lcd como podemos ver en la siguiente imagen.
Ahora para realizar la conexión desde el modulo al arduino, debemos identificar los pines i2c, a continuación tenemos una tabla con varias placas en donde puede ver que pines debe conectar al modulo.
Adaptador LCD a I2C | Arduino Uno, Nano, Mini | Arduino Mega , DUE | Arduino Leonardo |
---|---|---|---|
GND | GND | GND | GND |
VCC | 5V | 5V | 5V |
SDA | A4 | 20 | 2 |
SCL | A5 | 21 | 3 |
Código
El código que trabajamos a continuación usa la librería LiquidCrystal_I2C para controlar la pantalla por medio del protocolo y comunicación i2c, vamos a explicar paso a paso su funcionamiento.
Para mas detalles del manejo de la librería, puede guiarse en el post LiquidCrystal i2c donde explicamos todos sus métodos.
// Paso 1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Paso 2
LiquidCrystal_I2C lcd(0x3F,16,2);
void setup() {
// Paso 3
lcd.init();
// Paso 4
lcd.backlight();
// Paso 5
lcd.setCursor(0,0);
lcd.print("codigo");
lcd.setCursor(0,1);
lcd.print("electronica");
delay(2000);
lcd.clear();
}
void loop() {
lcd.setCursor(0, 1);
lcd.print(millis()/1000);
lcd.print(" Segundos");
delay(100);
}
- Cargamos las librerías, en este caso necesitamos a Wire de primeras para poder hacer la comunicación i2c.
- Creamos el objeto lcd de la librerías donde indicamos la dirección donde se encuentra el modulo en la comunicación i2c, ademas de la cantidad de filas y columnas.
- Inicializamos el lcd con los parámetros configurados de la dirección, filas y columnas.
- Indicamos que vamos a trabajar con el backlight.
- Ahora decimo que con setCursor indicamos que empiece a escribir desde la coliman cero a la fila cero, con print colocamos el mensaje y por ultimo clear, es quien limpia la pantalla.