Professional Documents
Culture Documents
Una vez que tenemos soldado el adaptador I2C, hay que identificar los pines de I2C en la
tarjeta Arduino que estemos usando. En el Arduino UNO, los pines del bus I2C
corresponden con los analógicos A4 y A5. También los encontramos duplicados en la parte
superior, cerca del conector USB y se etiquetan como SDA y SCL (por la parte de abajo del
PCB). Para realizar las conexiones con el Arduino te recomendamos revisar los mapas de
pines en este post y tener la versión impresa siempre a la mano.
Las conexiones se realizan de la siguiente forma con el Arduino, como podemos ver estamos
usando los pines analógicos A4 y A5, aunque también se puede conectar a SDA y SCL cerca
del conector USB:
Librería para LCD 16×2 por I2C con Arduino
Para usar el LCD 16×2 por I2C con Arduino es necesario también agregar una librería a
nuestro IDE, de forma que este sepa cómo comunicarse con el chip PCF8574. Ya explicamos
en alguna ocasión como cargar una librería y comenzar a utilizarla, si tienes dudas
te recomendamos revisar el tutorial. Cabe aclarar que esta librería, así como el adaptador I2C
deben funcionar de forma correcta con las pantallas de 20×4.
Puedes descargar la librería desde la página oficial en Bitbucket (repo) o desde nuestro
servidor. A continuación dejamos los enlaces para cada una de las opciones.
Descarga desde página oficial (repositorio bitbucket)
Descarga desde nuestro servidor
La librería LiquidCrystal_I2C dispone de métodos similares (algunos idénticos) a los de la
librería oficial.
LiquidCrystal_I2C () – Constructor de la clase, configura el hardware.
init() – Prepara el LCD para su uso.
clear() – Borra todos los caracteres de la pantalla LCD.
setCursor(col, row) – Permite mover el cursor a la posición indicada en sus parámetros.
print() – Imprime una variable o literal en la pantalla
scrollDisplayLeft() y scrollDisplayRight() – Recorre el contenido de la pantalla a la izquierda
o a la derecha
backlight() y noBacklight() – Métodos para encender / apagar la iluminación de fondo
createChar(num, data) – Crear un carácter definido por el usuario en la memoria del
controlador de pantalla
Recomendamos revisar el siguiente enlace para conocer todos los métodos de los que
dispone la librería oficial LiquidCrystal:
Documentación de la clase LiquidCrystal (librería oficial para LCD incluida con Arduino)
Ejemplo básico para controlar LCD 16×2 por I2C con
Arduino
/**
GeekFactory - "Construye tu propia tecnologia"
Distribucion de materiales para el desarrollo e innovacion tecnologica
www.geekfactory.mx
ESTE PROGRAMA MUESTRA UN MENSAJE EN UNA PANTALLA DE 16X2 Y REALIZA UNA ANIMACION
DE DESPLAZAMIENTO DE UN EXTREMO A OTRO DE LA PANTALLA.
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
void setup()
{
// Indicar a la libreria que tenemos conectada una pantalla de 16x2
lcd.begin(16, 2);
// Mover el cursor a la primera posición de la pantalla (0, 0)
lcd.home ();
// Imprimir "Hola Mundo" en la primera linea
lcd.print("Hola Mundo");
// Mover el cursor a la segunda linea (1) primera columna
lcd.setCursor ( 0, 1 );
// Imprimir otra cadena en esta posicion
lcd.print("GEEKFACTORY");
// Esperar un segundo
delay(1000);
}
void loop()
{
// EN EL CICLO PRINCIPAL SOLAMENTE RECORREMOS EL MENSAJE DE UN LADO A OTRO
// Variable para conteo de ciclos
int i;
/**
GeekFactory - "Construye tu propia tecnologia"
Distribucion de materiales para el desarrollo e innovacion tecnologica
www.geekfactory.mx
void setup()
{
// Indicar a la librería que tenemos conectada una pantalla de 16x2
lcd.begin(16, 2);
// Mover el cursor a la primera posición de la pantalla (0, 0)
lcd.clear();
// Imprimir "Hola Mundo" en la primera línea
lcd.print(" GEEKFACTORY.MX ");
// Esperar un segundo
delay(1000);
}
void loop()
{
// Actualizar la pantalla completa cada segundo
lcd.clear();
// Imprimir encabezado
lcd.print(" POTENCIOMETRO ");
Las pantallas LCD 16×2 permiten definir hasta 8 caracteres personalizados, la librería
LiquidCrystal_I2C provee las facilidades para realizar esta tarea de manera muy sencilla.
Cada carácter se define como un grupo de 8 bytes que se envían a la memoria CGRAM. Por
ejemplo, podemos crear un icono con una carita feliz de la siguiente forma:
Y traducido a código en C, quedaría de la siguiente forma:
byte smile[8] = {
0b00000000,
0b00001010,
0b00001010,
0b00001010,
0b00000000,
0b00010001,
0b00001110,
0b00000000,
};
Podemos ponernos bastante creativos con esta funcionalidad del LCD y podemos obtener
resultados bastante llamativos como se puede ver en la siguiente imagen:
El siguiente programa nos muestra como dar de alta caracteres personalizados en un LCD
16×2 por I2C con Arduino.
/**
GeekFactory - "Construye tu propia tecnología"
Distribución de materiales para el desarrollo e innovación tecnológica
www.geekfactory.mx
EJEMPLO BÁSICO PARA EL USO DEL LCD 16X2 A TRAVÉS DE I2C
ESTE EJEMPLO MUESTRA COMO IMPRIMIR EL VALOR DE UNA VARIABLE HACIA
LA PANTALLA LCD A TRAVÉS DE I2C. ESTO PUEDE SER UTIL PARA VISUALIZAR EL
VALOR LEIDO POR UN SENSOR, MOSTRAR UN CONTADOR, ETC.
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
byte sad[8] = {
0b00000000,
0b00001010,
0b00001010,
0b00001010,
0b00000000,
0b00001110,
0b00010001,
0b00000000,
};
byte body[8] = {
0b00001110,
0b00001110,
0b00000100,
0b00011111,
0b00000100,
0b00001010,
0b00010001,
0b00000000,
};
byte arrowr[8] = {
0b00001000,
0b00000100,
0b00000010,
0b00011111,
0b00000010,
0b00000100,
0b00001000,
0b00000000,
};
byte arrowu[8] = {
0b00000100,
0b00001110,
0b00010101,
0b00000100,
0b00000100,
0b00000100,
0b00000100,
0b00000000,
};
byte arrowd[8] = {
0b00000100,
0b00000100,
0b00000100,
0b00000100,
0b00010101,
0b00001110,
0b00000100,
0b00000000,
};
byte arrowl[8] = {
0b00000010,
0b00000100,
0b00001000,
0b00011111,
0b00001000,
0b00000100,
0b00000010,
0b00000000,
};
void setup()
{
// Indicar a la librería que tenemos conectada una pantalla de 16x2
lcd.begin(16, 2);
void loop()
{
Conclusión
En este artículo vimos una forma más eficiente en cuanto al uso de pines para conectar una
pantalla LCD de 16 x 2 al Arduino
Revisamos las conexiones a realizar y vimos que podemos convertir la pantalla estándar a
una interfaz I2C de forma permanente.
También aprendimos a realizar las conexiones en el protoboard, sin necesidad de soldar
definitivamente el adaptador I2C
Descargamos e instalamos la librería correspondiente para controlar la LCD 16×2 por I2C con
Arduino
Realizamos un ejemplo básico para mostrar texto en la pantalla
Aprendimos a mostrar el valor de las variables en la pantalla LCD
Mostramos como podemos crear caracteres personalizados y mostrarlos en la pantalla