Está en la página 1de 22

9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

Contacte con nosotros Iniciar sesión

Buscar

0
S/. 0,00

CATEGORÍAS

All Blog News Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

ARTÍCULOS POPULARES

Tutorial sensor de ujo de agua abr 13, 2016

Con guración del módulo bluetooth HC-05 usando comandos AT ago 08, 2015

Tutorial trasmisor de celda de carga HX711, Balanza Digital ago 23, 2015

ARTÍCULOS RECIENTES

Usando ESP8266 con el IDE de Arduino oct 21, 2016

Tutorial Sensor de Distancia SHARP sep 28, 2016

Arduino y ESP8266 como cliente web ago 24, 2016

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 1/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

PROMOCIONES ESPECIALES

Sensor de Temperatura Digital DS18B20


Sensor digital de Temperatura, con...

S/. 11,00 S/. 12,00

Todas los promociones especiales

ETIQUETAS

sensor robot LED cnc regulador driver infrarrojo Servo LCD rele

NOVEDADES

Case para Raspberry Pi Zero

S/. 35,00

Raspberry Pi Zero W
El Raspberry Pi más pequeño y más económico pero con la misma utilidad...

S/. 105,00

Cables para Raspberry Pi Zero

S/. 35,00

Raspberry Pi Zero
El Raspberry Pi más pequeño y más económico pero con la misma utilidad...

S/. 70,00

Pulsioxímetro MAX30102
Construye tu propio pulsioxímetro con la ayuda de este magnífico sensor.

S/. 34,00

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 2/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004
Ball caster acero D12mm
Ball caster de gran resistencia, ideal para proyectos de robótica móvil...

S/. 10,00

Voltimetro/Amperimetro DC 100A
Medidor de bajo costo de voltaje y corriente DC hasta 100 amperios

S/. 75,00

Todas los nuevos productos

Tutorial LCD, conectando tu arduino a un LCD1602 y


LCD2004
Posted by Tutoriales 4 Comments

En este tutorial se explicaran el funcionamiento de los LCD alfanuméricos, desarrollaremos


varios ejemplos prácticos, aprenderemos a cómo usar los LCD en nuestros proyectos y
como crear caracteres personalizados.

En muchos de nuestros proyectos necesitamos visualizar o monitorear parámetros, si bien


una solución es los display de 7 segmentos, pero solo estamos limitados a valores
numéricos e incluso si deseamos poner varios dígitos a nivel de hardware aumenta
nuestro diseño electrónico por lo que necesitamos técnicas de multiplexado.
Los LCD alfanuméricos son la solución más práctica, para este problema, empezando por
su bajo consumo, diferentes tamaños disponibles, y trabaja con caracteres alfanuméricos,
por lo que podemos representar cualquier texto o variable.
Los LCD alfanuméricos más utilizados en el mercado son el LCD1602 y el LCD204 con
tamaños de 16x2 y 20x4 caracteres respectivamente. Entre estos tamaños también hay

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 3/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

diferentes modelos los cuales varían en color y sobretodo en la presencia o no de un


Backlight (retro iluminador incorporado)

El LCD tiene una memoria interna en donde almacena todos sus caracteres alfanuméricos,
los cuales podemos extender en ocho caracteres personalizados adicionales.

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 4/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

Los caracteres soportados por la mayoría de modelos de LCD son los siguientes:

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 5/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 6/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

Para la comunicación del LCD y un controlador utiliza un bus de 8 datos, pero se puede
configurar para trabajar con un buz de 4 datos. También usa pines de control RS (chip
select) RW (lectura/escritura) y E (enable).
Para controlar el contrastes usa una entrada analógica VEE el cual por lo general se usa
un potenciómetro para poder variar el contraste, y los LCD q traen Backlight tiene dos
pines al final Led+ (A) y Led- (K) los cuáles se pueden alimentar directamente a 5V o a
través de una resistencia si se tratase de un LED, variando su resistencia se pude variar la
intensidad de luz.

Conexiones entre Arduino y display LCD1602

LCD1602 o LCD2004 Arduino Uno, Nano, Mega, etc.

VSS GND

VDD 5V

VEE Potenciómetro

RS D8

RW GND

EN D9

11. D4 D4

12. D5 D5

13. D6 D6

14. D7 D7

15. Led+ VCC

16. Led- GND

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 7/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

Conexiones entre Arduino y display LCD2004


Las conexiones para el LCD de 20 x 4 son las mismas:

Librería LiquidCrystal de Arduino

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 8/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

El IDE de Arduino ya viene con una librería que nos permite manejar diferentes tamaños
de LCD’s, La documentación completa la pueden encontrar en la página oficial de Arduino:
LiquidCrystal
Explicaremos las funciones principales, las cuales se usaran en este tutorial.

LiquidCrystal(rs, en, d4, d5, d6, d7)


Función constructor, crea una variable de la clase LiquidCrystal, con los pines
indicados.

begin(cols, rows)
Inicializa el LCD, es necesario especificar el número de columnas (cols) y filas (rows)
del LCD.

clear()
Borra la pantalla LCD y posiciona el cursor en la esquina superior izquierda (posición
(0,0)).

setCursor(col, row)
Posiciona el cursor del LCD en la posición indicada por col y row (x,y); es decir,
establecer la ubicación en la que se mostrará posteriormente texto escrito para la
pantalla LCD.

write()
Escribir un carácter en la pantalla LCD, en la ubicación actual del cursor.

print()
Escribe un texto o mensaje en el LCD, su uso es similar a un Serial.print

scrollDisplayLeft()
Se desplaza el contenido de la pantalla (texto y el cursor) un espacio hacia la
izquierda.

scrollDisplayRight()
Se desplaza el contenido de la pantalla (texto y el cursor) un espacio a la derecha.

createChar (num, datos)


Crea un carácter personalizado para su uso en la pantalla LCD. Se admiten hasta
ocho caracteres de 5x8 píxeles (numeradas del 0 al 7). Donde: num es el número de
carácter y datos es una matriz que contienen los pixeles del carácter. Se verá un
ejemplo de esto mas adelante.
Explicado la librería veamos unos ejemplos:

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 9/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

Un Hola mundo con Arduino y LCD7

Mostraremos texto y un valor numérico en el LCD, para esto cargamos el siguiente


sketch:

#include <LiquidCrystal.h>

//Crear el objeto LCD con los números correspondientes (rs, en, d4, d5, d6, d7)
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {
// Inicializar el LCD con el número de columnas y filas del LCD
lcd.begin(16, 2);
// Escribimos el Mensaje en el LCD.
lcd.print("Hola Mundo");
}

void loop() {
// Ubicamos el cursor en la primera posición(columna:0) de la segunda línea(fila:1)
lcd.setCursor(0, 1);
// Escribimos el número de segundos trascurridos
lcd.print(millis()/1000);
lcd.print(" Segundos");
delay(100);
}

Como se observa con la función printf() escribimos el texto, y con setCursor(x,y) indicamos
la poción en donde deseamos que se escriba el texto.
Después de cargar, en su LCD deben obtener el siguiente resultado

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 10/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

Para el caso del LCD de 20x4 tienen que especificar este tamaño cundo inicializan el LCD.

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {
// Inicializar el LCD con el número de columnas y filas del LCD
lcd.begin(20,4);
// Escribimos el Mensaje en el LCD
lcd.print("Hola Mundo");
lcd.setCursor(0,2);
lcd.print("NAYLAMP MECHATRONICS");
lcd.setCursor(0,3);
lcd.print(" PERU ");
}

void loop() {
// Ubicamos el cursor en la primera posición (columna:0) de la segunda línea(fila:1)
lcd.setCursor(0, 1);
// Escribimos el número de segundos trascurridos
lcd.print(millis()/1000);
lcd.print(" segundos");
delay(100);

Desplazando el texto en el LCD


En este ejemplo para desplazar el texto usaremos la función scrollDisplayLeft();

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 11/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

#include <LiquidCrystal.h>

//Crear el objeto LCD con los números correspondientes (rs, en, d4, d5, d6, d7)
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {
// Inicializar el LCD con el número de columnas y filas del LCD
lcd.begin(16, 2);
// Escribimos el Mensaje en el LCD en una posición central.
lcd.setCursor(10, 0);
lcd.print("WWW.NAYLAMPMECHATRONICS.COM");
lcd.setCursor(5, 1);
lcd.print("Tutorial LCD, Test de desplazamiento ");
}

void loop() {
//desplazamos una posición a la izquierda
lcd.scrollDisplayLeft();
delay(250);
}

Como se observa en el código, inicialmente escribimos el texto, luego desplazamos el


texto una posición por cada ciclo con una pausa de 250ms , tiempo que si se varía
aumentará o disminuirá la velocidad de desplazamiento, notar que el texto que escribimos
es mayor a los 16 caracteres, pero igual el texto no se pierde, esto es porque el espacio de
trabajo por cada fila en realidad es de 40 caracteres, y el LCD solo muestra los 16
primeros caracteres, pero al desplazarlo logramos ver los demás caracteres.

Mostrando datos de sensores o variables en el LCD


En este ejemplo mostramos en el LCD variables, que pueden representar valores de
sensores u otros datos. Para simular los sensores usaremos potenciómetros
conectados a los pines analógicos.
https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 12/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

#include <LiquidCrystal.h>

//Crear el objeto LCD con los números correspondientes (rs, en, d4, d5, d6, d7)
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {
// Inicializar el LCD con el número de columnas y filas del LCD
lcd.begin(16,2);
}

void loop() {
int sen1=analogRead(A0);
float sen2=analogRead(A1)*(5.0 / 1023.0);
float sen3=analogRead(A2)*(100.0 / 1023.0);
int tiempo=millis()/1000;
// Cursor en la primera posición de la primera fila
lcd.setCursor(0,0);
lcd.print("ADC:");
lcd.print(sen1);
lcd.print(" ");
// Cursor en la 11° posición de la primera fila
lcd.setCursor(10,0);
lcd.print("V:");
lcd.print(sen2,1);//1 decimal
lcd.print("V ");
// Cursor en la primera posición de la 2° fila
lcd.setCursor(0,1);
lcd.print("T:");
lcd.print(sen3,1); //1 decimal
lcd.print("337C "); // "337" -> "°"
// Cursor en la 11° posición de la 2° fila
lcd.setCursor(10,1);
lcd.print("t:");
lcd.print(tiempo);
lcd.print(" s ");

delay(200);

Su resultado debe ser el siguiente.

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 13/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

De igual manera se trabaja con el LCD de 20x4, con la ventaja de tener más espacio para
mostrar los valores.

#include <LiquidCrystal.h>

//Crear el objeto LCD con los números correspondientes (rs, en, d4, d5, d6, d7)
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {
// Inicializar el LCD con el número de columnas y filas del LCD
lcd.begin(20,4);
}

void loop() {
int sen1=analogRead(A0);
float sen2=analogRead(A1)*(5.0 / 1023.0);
float sen3=analogRead(A2)*(100.0 / 1023.0);
int tiempo=millis()/1000;
// Cursor en la primera posición de la primera fila
lcd.setCursor(0,0);
lcd.print("ADC: ");
lcd.print(sen1);
lcd.print(" ");
// Cursor en la 1° posición de la 2° fila
lcd.setCursor(0,1);
lcd.print("Voltaje: ");
lcd.print(sen2);
lcd.print(" V ");
// Cursor en la primera posición de la 3° fila
lcd.setCursor(0,2);
lcd.print("Temperatura:");
lcd.print(sen3); //1 decimal
lcd.print(" 337C "); // "337" -> "°"
// Cursor en la 1° posición de la 4° fila
lcd.setCursor(0,3);
lcd.print("tiempo: ");
lcd.print(tiempo);
lcd.print(" s ");
https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 14/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

delay(200);

Agregando nuevos caracteres a nuestro LCD


En algunos casos el LCD no tiene los caracteres que deseamos, o necesitamos dibujar
caracteres personalizados, en este caso usamos la función createChar () pero antes
expliquemos como está constituido un carácter:
Un carácter está formado por 5x8 pixeles los cuales se representan por 8 bytes, uno para
cada fila, los 5 bits menos significativos representan los pixeles del carácter

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 15/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

Como máximo podemos crear 8 caracteres nuevos.


Para este ejemplo crearemos los siguientes caracteres:

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 16/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

A continuación se muestra el código para implementar los nuevos caracteres.

#include <LiquidCrystal.h>
//Crear el objeto LCD con los números correspondientes (rs, en, d4, d5, d6, d7)
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

byte N[8] = {
B11111,
B10001,
B10001,
B10001,
B10001,
B10001,
B10001,
B00000,
};
byte A[8] = {
B11111,
B10001,
B10001,
B10001,
B10001,
B11111,
B10001,
B00000,
};
byte Y[8] = {
B10001,
B10001,

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 17/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

B10001,
B10001,
B11111,
B00100,
B00100,
B00000,
};
byte L[8] = {
B10000,
B10000,
B10000,
B10000,
B10000,
B10000,
B11111,
B00000,
};
byte M[8] = {
B11111,
B10101,
B10101,
B10101,
B10101,
B10101,
B10101,
B00000,
};
byte P[8] = {
B11111,
B10001,
B10001,
B10001,
B11111,
B10000,
B10000,
B00000,
};
byte cara[8] = {
B00000,
B10001,
B00000,
B00000,
B10001,
B01110,
B00000,
};
byte cuerpo[8] = {
B01110,
B01110,
B00100,
B11111,
B00100,
B01010,
B10001,
B00000,
};

void setup () {
lcd.createChar (0,N);
lcd.createChar (1,A);
lcd.createChar (2,Y);

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 18/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

lcd.createChar (3,L);
lcd.createChar (4,M);
lcd.createChar (5,P);
lcd.createChar (6,cara);
lcd.createChar (7,cuerpo);
// Inicializar el LCD con el número de columnas y filas del LCD
lcd.begin (20, 4);

// Escribimos el texto en el LCD


lcd.print("Nuevos Caracteres");
lcd.setCursor(0, 1);
lcd.print("------");
lcd.write (byte (0));
lcd.write (byte (1));
lcd.write (byte (2));
lcd.write (byte (3));
lcd.write (byte (1));
lcd.write (byte (4));
lcd.write (byte (5));
lcd.print("-------");

lcd.setCursor(0, 2);
for(int i=0;i<10;i++)
{
lcd.write (byte (6));
lcd.write (' ');
}
lcd.setCursor(0, 3);
for(int i=0;i<20;i++)
lcd.write (byte (7));

void loop () {}

Como observan en el código es necesario crear los nuevos caracteres antes de inicializar
el LCD. El resultado del ejemplo anterior es el siguiente:

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 19/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

El ejemplo anterior se trabajó con un LCD de 20x4 pero ya saben cómo modificar para
trabajar con un LCD de 16x2.

Pueden adquirir los materiales usados en este tutorial en


nuestra tienda
- Arduino Uno R3
- LCD1602 Azul Backlight
- LCD2004 Azul Backlight

 
Tutoriales Relacionados
- Tutorial LCD con I2C, controla un LCD con solo dos pines
- Tutorial pantalla TFT táctil con Arduino

Tags: LCD Display

23 ?? 0 ?? 0 Compartir 1

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 20/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

4 Comments

Andres
jun 3, 2018

Buenas noches, una pregunta resulta que tengo que simular una LCD 20x4, para un trabajo me
podrías decir qué programa utilizaste para simular la LCD y el programa hola mundo. Mil gracias

Reply

Federico
jul 17, 2018

Hola! Antes que nada excelente pagina! Felicitaciones. Tengo un LCD 2004, creo estar haciendo
todo tal cual me decis, estoy usasndo un potenciometro de 10k, y no se por que el brillo de la
pantalla es minimo, si hay luz practicamente no se ven las letras, son casi transparentes, se te
ocurre que puede ser?

Reply

Juan Francisco
jul 30, 2018

Tené en cuenta que el tutorial es para la intensidad de luz en las letras. El backlight
se maneja con el A (anodo) y el K (catodo), es decir, las ultimas 2 entradas del LCD
de izquierda a derecha. Tendrías que poner otro potenciometro entre estos dos para
variar su intensidad.

Reply

Jorge Ruiz
ago 28, 2018

Gran calidad de explicacioón, junto con los maravillosos ejemplos e ilustraciones. Todo muy
completo...Tendré su pagina de consulta....Great, Great....

Reply

Leave a Reply
* Name:

* E-mail:
(Not Published)

Website:
(Site url withhttp://)

* Comment:

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 21/22
9/9/2018 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

Submit

Boletín Introduzca su dirección de correo electróni

Información
Contacte con nosotros

Entrega
Condiciones de uso

Nosotros

Tutoriales y Proyectos con Arduino

Mapa del sitio

Mi cuenta
Mis compras

Mis vales descuento

Mis direcciones

Mis datos personales

Mis vales

Información sobre la tienda

Naylamp Mechatronics SAC., Almacén: Mz. E Lote 31 Urb. Ingeniería, Trujillo - Perú //// Horario de atención:

Lun. a Vie: 10am-7pm. Sab: 10am-6pm

Llámanos ahora: 997646858

Email: naylamp.mechatronics@gmail.com

https://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 22/22