You are on page 1of 17

16/7/2017 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

Contacte con nosotros Iniciar sesin

Buscar

0
S/. 0,00

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

ARTCULOS POPULARES

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

Con guracin del mdulo bluetooth HC-05 usando comandos AT ago 08, 2015

Tutorial Mdulo GPS con Arduino jun 25, 2015

ARTCULOS 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

http://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 1/17
16/7/2017 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

PROMOCIONES ESPECIALES
Mdulo PIR HC-SR501
Con este mdulo podrs detectar...

S/. 8,00 S/. 10,00

Todas los promociones especiales

ETIQUETAS

sensor robot cnc Servo infrarrojo LED LCD driver Fuente cable

NOVEDADES
Piezo Buzzer activo 12mm
Agrega alertas o efectos de sonido a tus proyectos

S/. 1,00

Piezo Buzzer activo 22mm


Agrega alertas o efectos de sonido a tus proyectos

S/. 7,00

Shield Display LCD TFT 3.5"


Pantalla de 3.5", colores vvidos, incluye lector de tarjetas microSD.

S/. 70,00

Mdulo expansor IO PCF8574


El PCF8574 es un expansor de E/S compatible con la mayora de...

S/. 12,00

http://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 2/17
16/7/2017 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004
Sensor de presin BMP280
Sensor de presin baromtrica BMP280 de alta precisin y de bajo consumo...

S/. 15,00

Sensor de Presin, Temperatura y Humedad BME280


Sensor de monitoreo ambiental ideal para aplicaciones de Drones e...

S/. 28,00

Mdulo GY-91 MPU9250 + BMP280 : Acelermetro, Giroscopio, Magnetmetro, Altmetro I2C


Sensor ultra compacto de 10 grados de libertad (DoF)

S/. 50,00

Shield Relay v2
La manera ms sencilla y rpida de controlar cargas de alta corriente...

S/. 45,00

Todas los nuevos productos

Tutorial LCD, conectando tu arduino a un LCD1602 y


LCD2004
Posted by Tutoriales 0 Comments

http://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 3/17
16/7/2017 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

En este tutorial se explicaran el funcionamiento de los LCD alfanumricos, desarrollaremos


varios ejemplos prcticos, aprenderemos a cmo usar los LCD en nuestros proyectos y
como crear caracteres personalizados.

En muchos de nuestros proyectos necesitamos visualizar o monitorear parmetros, si bien


una solucin es los display de 7 segmentos, pero solo estamos limitados a valores
numricos e incluso si deseamos poner varios dgitos a nivel de hardware aumenta
nuestro diseo electrnico por lo que necesitamos tcnicas de multiplexado.
Los LCD alfanumricos son la solucin ms prctica, para este problema, empezando por
su bajo consumo, diferentes tamaos disponibles, y trabaja con caracteres alfanumricos,
por lo que podemos representar cualquier texto o variable.
Los LCD alfanumricos ms utilizados en el mercado son el LCD1602 y el LCD204 con
tamaos de 16x2 y 20x4 caracteres respectivamente. Entre estos tamaos tambin hay
diferentes modelos los cuales varan en color y sobretodo en la presencia o no de un
Backlight (retro iluminador incorporado)

http://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 4/17
16/7/2017 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

El LCD tiene una memoria interna en donde almacena todos sus caracteres alfanumricos,
los cuales podemos extender en ocho caracteres personalizados adicionales.
Los caracteres soportados por la mayora de modelos de LCD son los siguientes:

http://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 5/17
16/7/2017 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

http://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 6/17
16/7/2017 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

Para la comunicacin del LCD y un controlador utiliza un bus de 8 datos, pero se puede
configurar para trabajar con un buz de 4 datos. Tambin usa pines de control RS (chip
select) RW (lectura/escritura) y E (enable).
Para controlar el contrastes usa una entrada analgica VEE el cual por lo general se usa
un potencimetro para poder variar el contraste, y los LCD q traen Backlight tiene dos
pines al final Led+ (A) y Led- (K) los cules se pueden alimentar directamente a 5V o a
travs 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 Potencimetro

RS D8

RW GND

EN D9

11. D4 D4

12. D5 D5

13. D6 D6

14. D7 D7

15. Led+ VCC

16. Led- GND

http://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 7/17
16/7/2017 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:

Librera LiquidCrystal de Arduino

http://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 8/17
16/7/2017 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

El IDE de Arduino ya viene con una librera que nos permite manejar diferentes tamaos
de LCDs, La documentacin completa la pueden encontrar en la pgina oficial de Arduino:
LiquidCrystal
Explicaremos las funciones principales, las cuales se usaran en este tutorial.

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


Funcin constructor, crea una variable de la clase LiquidCrystal, con los pines
indicados.

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

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

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

write()
Escribir un carcter en la pantalla LCD, en la ubicacin 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 carcter personalizado para su uso en la pantalla LCD. Se admiten hasta
ocho caracteres de 5x8 pxeles (numeradas del 0 al 7). Donde: num es el nmero de
carcter y datos es una matriz que contienen los pixeles del carcter. Se ver un
ejemplo de esto mas adelante.
Explicado la librera veamos unos ejemplos:

Un Hola mundo con Arduino y LCD7


http://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 9/17
16/7/2017 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

Un Hola mundo con Arduino y LCD7

Mostraremos texto y un valor numrico en el LCD, para esto cargamos el siguiente


sketch:

#include <LiquidCrystal.h>

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

void setup() {
// Inicializar el LCD con el nmero 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 posicin(columna:0) de la segunda lnea(fila:1)
lcd.setCursor(0, 1);
// Escribimos el nmero de segundos trascurridos
lcd.print(millis()/1000);
lcd.print(" Segundos");
delay(100);
}

Como se observa con la funcin printf() escribimos el texto, y con setCursor(x,y) indicamos
la pocin en donde deseamos que se escriba el texto.
Despus de cargar, en su LCD deben obtener el siguiente resultado

http://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 10/17
16/7/2017 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

Para el caso del LCD de 20x4 tienen que especificar este tamao cundo inicializan el LCD.

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

void setup() {
// Inicializar el LCD con el nmero 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 posicin (columna:0) de la segunda lnea(fila:1)
lcd.setCursor(0, 1);
// Escribimos el nmero 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 funcin scrollDisplayLeft();

http://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 11/17
16/7/2017 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

#include <LiquidCrystal.h>

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

void setup() {
// Inicializar el LCD con el nmero de columnas y filas del LCD
lcd.begin(16, 2);
// Escribimos el Mensaje en el LCD en una posicin 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 posicin a la izquierda
lcd.scrollDisplayLeft();
delay(250);
}

Como se observa en el cdigo, inicialmente escribimos el texto, luego desplazamos el


texto una posicin por cada ciclo con una pausa de 250ms , tiempo que si se vara
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 dems 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 potencimetros
conectados a los pines analgicos.
http://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 12/17
16/7/2017 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

#include <LiquidCrystal.h>

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

void setup() {
// Inicializar el LCD con el nmero 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 posicin de la primera fila
lcd.setCursor(0,0);
lcd.print("ADC:");
lcd.print(sen1);
lcd.print(" ");
// Cursor en la 11 posicin de la primera fila
lcd.setCursor(10,0);
lcd.print("V:");
lcd.print(sen2,1);//1 decimal
lcd.print("V ");
// Cursor en la primera posicin 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 posicin 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.

http://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 13/17
16/7/2017 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 ms espacio para
mostrar los valores.

#include <LiquidCrystal.h>

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

void setup() {
// Inicializar el LCD con el nmero 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 posicin de la primera fila
lcd.setCursor(0,0);
lcd.print("ADC: ");
lcd.print(sen1);
lcd.print(" ");
// Cursor en la 1 posicin de la 2 fila
lcd.setCursor(0,1);
lcd.print("Voltaje: ");
lcd.print(sen2);
lcd.print(" V ");
// Cursor en la primera posicin de la 3 fila
lcd.setCursor(0,2);
lcd.print("Temperatura:");
lcd.print(sen3); //1 decimal
lcd.print(" 337C "); // "337" -> ""
// Cursor en la 1 posicin de la 4 fila
lcd.setCursor(0,3);
lcd.print("tiempo: ");
lcd.print(tiempo);
lcd.print(" s ");
http://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 14/17
16/7/2017 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 funcin createChar () pero antes
expliquemos como est constituido un carcter:
Un carcter 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 carcter

http://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 15/17
16/7/2017 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

Como mximo podemos crear 8 caracteres nuevos.


Para este ejemplo crearemos los siguientes caracteres:

http://www.naylampmechatronics.com/blog/34_Tutorial-LCD-conectando-tu-arduino-a-un-LCD1.html 16/17
16/7/2017 Tutorial LCD, conectando tu arduino a un LCD1602 y LCD2004

A continuacin se muestra el cdigo para implementar los nuevos caracteres.

#include <LiquidCrystal.h>
//Crear el objeto LCD con los nmeros 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,

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

You might also like