Trastejant

Crea, comparte, aprende y disfruta

Display LCD: La Librería LiquidCrystal

Display LCD

La librería esta diseñada para todos los LCD que lleven un chip Hitachi HD44780 , estos LCD son lo más comunes de encontrar en las tiendas de electrónica y pueden reconocerse por controlarse desde sus 16 patitas.

 

El Display LCD

Existen muchos tipos de LCD (distintos tamaños,colores,iluminados, sin iluminar…) Pero el funcionamiento general de todos es el mismo.

En este tutorial nos centraremos en el control de un LCD de 16pixeles de largo por 2 de alto.
Explicado muy brevemente y sin entrar en profundidad en el tema, podemos decir que un lcd de este tipo cuenta con cristal liquido en cada uno de sus pixeles. Para iluminar alguno de ellos lo que se hace es aplicar un campo eléctrico en la zona deseada, de esta forma el cristal liquido se polariza y la percibimos de otro color.
La gestión de crear el campo y delimitar el numero de pixeles necesarios para el carácter que queremos mostrar la realiza un controlador, generalmente un hitachi HD44780, nosotros solamente tenemos que pasarle algunos parámetros, como el lugar donde escribirlo y, claro esta, el carácter en si.

Conexión

Las patillas tienen estas funciones:

 

NºPin Nombre Función
1 GND Tierra
2 Vcc 5V
3 Contraste Regula el contraste de la pantalla. Esto se puede hacer con el pwn de Arduino o con este circuito
4 RS Selección del registro a leer/Escribir
5 R/W Selecciona si vamos a leer o escribir
6 E Enable
7 DB0 Datos
8 DB1 Datos
9 DB2 Datos
10 DB3 Datos
11 DB4 Datos
12 DB5 Datos
13 DB6 Datos
14 DB7 Datos
15
16

Para conectarlo a Arduino emplearemos esta conexión:

circuito LCD

 Arduino LCD
 2  4
 3  5
 4  6
 5 3 (Si se quiere controlar asi el contraste)
 9  11
 10  12
 11  13
 12  14

 

Esta Librería, llamada LiquidCrystal, nos proporciona gran numero de herramientas para trabajar con un LCD. Estas son las funciones que se incluyen en la versión 1.0.

Print

Escribe un texto en el LCD

Sintaxis

lcd.print(textoParaMostrar);
lcd.print(textoParaMostrar,BASE);

Parametros

textoParaMostrar: el texto que queremos que aparezca en la pantalla. Puede ser mediante una variable en la que lo tuviésemos almacenado o poniendo el texto directamente entre comillas simples.
BASE: Esto es OPCIONAL y sirve para definir el formato en el que queremos mostrarlo. Puede ser:

  •  BIN: Binario (base 2)
  •  DEC: Decimal (base 10)
  • OCT: Octal (base 8)
  •  HEX: Hexadecimal. (base 16).

Ejemplo

1
2
3
4
5
6
7
8
9
#include <LiquidCrystal.h>;
//Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasamos la configuración,
//se corresponden con (rs,rw,enable,d1,d2,d3,d4)
LiquidCrystal lcd(2,3,4,9,10,11,12);
void setup(){
}
void loop(){
lcd.print('HOLA MUNDO');
}

Begin

Esta función sirve para especificar el tamaño de nuestro Display.

Sintaxis

lcd.begin(columnas,filas)

Parámetros

Columnas: Numero de columnas que tiene nuestro LCD.
Filas: Numero de filas que tiene nuestro LCD.

Ejemplo

1
2
3
4
5
6
7
8
9
10
11
//Para un display de 2x16
#include <LiquidCrystal.h>;
//Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasamos la configuración,
//se corresponden con (rs,rw,enable,d1,d2,d3,d4)
LiquidCrystal lcd(2,3,4,9,10,11,12);
void setup(){
lcd.begin(2,16);
}
void loop(){
lcd.print('HOLA MUNDO');
}

Clear

Esta función borra todo lo que estuviese escrito en nuestro LCD

Sintaxis

lcd.clear()

Parámetros

SIN PARÁMETROS

Ejemplo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <LiquidCrystal.h>
//Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasamos la configuración,
//se corresponden con (rs,rw,enable,d1,d2,d3,d4)
LiquidCrystal lcd(2,3,4,9,10,11,12);
void setup(){
lcd.begin(2,16);
}
void loop(){
//escribimos un texto
lcd.print('HOLA MUNDO');
//Esperamos
delay(1000);
//Y lo borramos
lcd.clear();
}

Home

Coloca el cursor en la esquina superior derecha del display.

Sintaxis

lcd.home();

Parámetros

SIN PARÁMETROS

Ejemplo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <LiquidCrystal.h>
//Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasamos la configuración,
//se corresponden con (rs,rw,enable,d1,d2,d3,d4)
LiquidCrystal lcd(2,3,4,9,10,11,12);
void setup(){
lcd.begin(2,16);
}
void loop(){
//escribimos un texto
lcd.print('HOLA MUNDO');
//Esperamos
delay(1000);
//volvemos al principio del display
lcd.home();
//volvemos a escribir encima
lcd.print('Que gusto verte');
}

Write

Escribe un carácter en el Display.

Sintaxis

lcd.write(caracter);

Parámetros

  • variable lcd
  • carácter: el carácter que queremos mostrar por pantalla

Ejemplo

1
2
3
4
5
6
7
8
9
10
11
#include <LiquidCrystal.h>
//Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasamos la configuración,
//se corresponden con (rs,rw,enable,d1,d2,d3,d4)
LiquidCrystal lcd(2,3,4,9,10,11,12);
void setup(){
lcd.begin(2,16);
}
void loop(){
if (Serial.available()) {
lcd.write('a');
}

Blink

Muestra un cursor con forma de bloque, como el que solían mostrar algunos ordenadores antiguos.

Sintaxis

  • lcd.blink()
  • lcd.noBlink()

Parametros

SIN PARÁMETROS

Ejemplo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <LiquidCrystal.h>
//Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasamos la configuración,
//se corresponden con (rs,rw,enable,d1,d2,d3,d4)
LiquidCrystal lcd(2,3,4,9,10,11,12);
void setup() {
// Escribimos un texto en el LCD.
lcd.print("HOLA MUNDO");
}
void loop() {
// Quitamos el Blink
lcd.noBlink();
//Hacemos una espera para poder ver el efecto
delay(3000);
// Activamos el Blink
lcd.blink();
//Hacemos una espera para poder ver el efecto
delay(3000);
}

Cursor

Muestra un cursor con forma de guion bajo.

Sintaxis

  • lcd.Cursor()
  • lcd.noCursor()

Parámetros

SIN PARÁMETROS

Ejemplo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <LiquidCrystal.h>
//Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasamos la configuración,
//se corresponden con (rs,rw,enable,d1,d2,d3,d4)
LiquidCrystal lcd(2,3,4,9,10,11,12);
void setup() {
// Escribimos un texto en el LCD.
lcd.print("HOLA MUNDO");
}
void loop() {
// Activamos la visualización del cursor
lcd.noCursor();
//Hacemos una pausa para ver el efecto
delay(500);
// Desconectamos la visualización del cursor
lcd.cursor();
//Hacemos una pausa para ver el efecto.
delay(500);
}

Display

Esta función permite encender y apagar el Display, pero sin perder lo que estaba mostrando. Es decir, que si mostramos por pantalla un texto y acto seguido hacemos un “noDisplay()” dejaremos de ver la información que estábamos mostrando, pero reaparecerá al hacer un “Display()” sin necesidad de volver a mandar el texto.
Esto puede ser interesante por ejemplo si estamos por ejemplo mostrando un menú por un Display y queremos ahorrar energía. podríamos apágalo tras un periodo de inactividad y volver a encenderlo exactamente en el mismo sitio cuando el usuario vuelva a presionar algún botón.

Sintaxis

  • lcd.display()
  • lcd.noDisplay()

Parámetros

SIN PARÁMETROS

Ejemplo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <LiquidCrystal.h>
//Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasamos la configuración,
//se corresponden con (rs,rw,enable,d1,d2,d3,d4)
LiquidCrystal lcd(2,3,4,9,10,11,12);
void setup() {
// Escribimos un texto en el LCD.
lcd.print("HOLA MUNDO");
}
void loop() {
// Apagamos el Display:
lcd.noDisplay();
delay(500);
// Encendemos el Display:
lcd.display();
delay(500);
}

Text Direction

rightToLeft(): Cuando se escribe, las letras aparecen a la izquierda del cursor. Es como si en un editor de textos tuviésemos el texto alineado a la derecha.
leftToRight(): Al contrario que el anterior, las letras aparecen a la derecha del cursor, la sensación que da es la de alineación a la izquierda.

Sintaxis

  • lcd.leftToRight()
  • lcd.rightToLeft()

Parámetros

SIN PARAMETROS

Ejemplo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <LiquidCrystal.h>
//Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasamos la configuración,
//se corresponden con (rs,rw,enable,d1,d2,d3,d4)
LiquidCrystal lcd(2,3,4,9,10,11,12);
void setup() {
// Escribimos un texto en el LCD.
lcd.print("HOLA");
}
void loop() {
//Hacemos que escriba a la izquierda del cursor.
lcd.rightToLeft();
lcd.print("izq");
delay(500);
//Hacemos que escriba a la derecha.
lcd.leftToRight();
lcd.print("dcha");
delay(500);
}

Autoscroll

Este programa de ejemplo muestra como usar las funciones autoscroll() y noAutoscroll() para mover todo el texto de la pantalla a la izquierda o a la derecha.

  • autoscroll() mueve todo el texto un espacio a la izquierda cada vez que se añade una letra.
  • noAutoscroll() apaga el desplazamiento

Sintaxis

  • lcd.autoscroll()
  • lcd.noAutoscroll()

Parámetros

SIN PARÁMETROS

Ejemplo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//Este ejemplo esta inspirado en el ejemplo que facilita www.arduino.cc entre sus tutoriales.
#include <LiquidCrystal.h//Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasamos la configuración,
//se corresponden con (rs,rw,enable,d1,d2,d3,d4)
 
LiquidCrystal lcd(2,3,4,9,10,11,12);
 
void setup() {
// Escribimos un texto en el LCD.
lcd.print("HOLA");
}
 
void loop() {
// Nos colocamos en la esquina superior izquierda
lcd.setCursor(0, 0);
// Escribimos los numeros del 0 al 9
 
for (int numero = 0; numero < 10; numero++) {
lcd.print(numero);
delay(500);
}
 
// Nos dirimos a la esquina inferior derecha.
lcd.setCursor(16,1);
// activamos el autoscroll para que mueva los caracteres segun escribimos.
lcd.autoscroll();
// volvemos a escribir los numeros del 0 al 9
for (int numero = 0; numero < 10; numero++) {
lcd.print(numero);
delay(500);
}
}

También te puede interesar...

No hay temas relacionados

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.