¿Qué es un LCD?

Las pantallas LCD (Liquid Cristal Display) son una de las formas más sencillas y económicas de dotar de un display a un autómata.

El Hitachi HD44780 es uno de los controladores de LCDs más ampliamente extendidos por su sencillez y bajo precio.

El HD44780 está diseñado para controlar LCDs monocromos de hasta 80 caracteres alfanuméricos y símbolos. También dispone de una pequeña memoria RAM para configurar nuestros propios caracteres o dibujos.

Las pantallas LCD con el controlador HD44770 se fabrican en distintos tamaños, siendo comunes 16×02 (16 caracteres en 2 líneas), 20×02, 20×04 y 40×02.

Las pantallas LCD disponen de retroiluminación trasera en azul o en verde. El contraste puede ser variado conectando un potenciómetro al LCD.

Conectar directamente un LCD a Arduino requiere una gran cantidad de pines. Es aconsejable emplear un adaptador a bus I2C.

Te puede interesar

Conexión eléctrica directa con Arduino

conexion directa
Conexión DIRECTA de un LCD HD44770 con Arduino

Como hemos adelantado, conectar un Arduino a una pantalla LCD HD44770 sin usar un adaptador I2C requiere una gran cantidad de cables. El esquema de conexión visto desde el LCD a los pines de Arduino es el siguiente.

lcd hd44770 pinout

Conexión eléctrica utilizando un Bus I2C

El controlador de LCD I2C es un dispositivo que nos permite controlar una pantalla a través del bus I2C, usando únicamente dos cables.

i2c pinout

Internamente el controlador LCD I2C es una variación del extensor de entradas y salidas digitales PCF8574, especialmente adaptado para pantallas LCD Hitachi HD44780. Incluso incorporan un potenciómetro para regular el backlight del LCD.

El controlador LCD I2C normalmente se entrega por separado, en cuyo caso tendremos que soldarlo al display LCD.

conexion i2c

En Arduino Uno, Nano y Mini Pro, SDA es el pin A4 y el SCK el pin A5. Para otros modelos de Arduino consultar el la guía de Pinout.

Código

Utilizando la conexión directa

El IDE de Arduino incorpora de serie la librería LiquidCrystal, para controlar pantallas LCD HD44770 de forma sencilla.

El siguiente sketch muestra el uso de las funciones de la librería para mostrar los textos «Linea 1» y «Linea 2» en una pantalla de 16×02.


// Conexión
// PIN2 - LCD4 (RS)
// PIN3 - LCD5 (R/W)
// PIN4 - LCD6 (E)
// PIN8 - LCD11 (D4)
// PIN9 - LCD12 (D5)
// PIN10 - LCD13 (D6)
// PIN11 - LCD14 (D7)

#include <LiquidCrystal.h>         
LiquidCrystal lcd(2, 3, 4, 8, 9, 10, 11); //(RS,RW, E, D4,D5, D6, D7)
 
void setup(){
   lcd.begin(16, 2);    // Inicia un LCD 16x02 (columnas,fila)
   lcd.setCursor(0, 0); // Pone el cursor en las coordenadas (0,0)
   lcd.print("Linea 1");// Escribe el LCD
   lcd.setCursor(0, 1); // Ponemos el cursor en la segunda Fila
   lcd.print("Linea 2");// Escribe el LCD
}
 
void loop(){
   lcd.noCursor(); //Apagar cursor
   delay(500);   
   lcd.cursor();   //Apagar encender cursor
   delay(500);
}

Utilizando el Bus I2C

Para poder usar una pantalla LCD I2C emplearemos la librería LiquidCrystal_I2C.

El uso es similar a la librería LiquidCrystal convencional. El siguiente sketch muestra el uso de las funciones de la librería para mostrar los textos “Linea 1” y “Linea 2” en una pantalla de 16×02.


#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);  // Inicia el LCD en la dirección 0x27, con 16 caracteres y 2 líneas
 
void setup(){
   lcd.begin();                      
   lcd.backlight();
   lcd.setCursor(0, 0);
   lcd.print("Linea 1");
   lcd.setCursor(0, 1);
   lcd.print("Linea 2");
   delay(2500);
   lcd.clear();
}
 
void loop(){
}