el display lcd

20
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 centrarems en el control de un LCD de 16pixeles de largo por 2 de alto. Explicado muy brevemente y sin entrar en profundida 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 electrico en la zona deseada, de esta forma el cristal liquido se polariza y la percibimos de otro color. La gestion de crear el campo y delimitar el numero de pixeles necesarios para el caracter que queremos mostrar la realiza un controlador, generalmente un hitachi HD44780, nosotros

Upload: yoss-nelo

Post on 06-Dec-2015

2 views

Category:

Documents


1 download

DESCRIPTION

la pantalla lcd arduino

TRANSCRIPT

Page 1: El Display LCD

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 centrarems en el control de un LCD de 16pixeles de largo por 2 de alto.

Explicado muy brevemente y sin entrar en profundida 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 electrico en la zona deseada, de esta forma el cristal liquido se polariza y la percibimos de otro color.

La gestion de crear el campo y delimitar el numero de pixeles necesarios para el caracter que queremos mostrar la realiza un controlador, generalmente un hitachi HD44780, nosotros solamente tenemos que pasarle algunos parametros, como el lugar donde escribirlo y, claro esta, el caracter en si.

Conexión

Las patillas tienen estas funciones:

NºPin Nombre Función1 GND Tierra

Page 2: El Display LCD

2 Vcc 5V

3 ContrasteRegula 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/Escribir5 R/W Selecciona si vamos a leer o escribir 6 E Enable7 DB0 Datos8 DB1 Datos 9 DB2 Datos10 DB3 Datos 11 DB4 Datos12 DB5 Datos 13 DB6 Datos14 DB7 Datos1516

Y la forma de conectarlas a Arduino seria esta:

 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

Este seria el esquema para conectarlo:

Page 3: El Display LCD

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

Print

Descripción

Escribe un texto en el LCD

Sintaxis

lcd.print(textoParaMostrar);

Page 4: El Display LCD

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

view plain print ?

1. #include <LiquidCrystal.h>;  2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa

mos la configuración,  3. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)  4. LiquidCrystal lcd(2,3,4,9,10,11,12);  5. void setup(){  6. }  7. void loop(){  8.     lcd.print('HOLA MUNDO');  9. }  

Begin

Descripción

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

Sintaxis

lcd.begin(columnas,filas)

Parametros

Columnas: Numero de columnas que tiene nuestro LCD.

Filas: Numero de filas que tiene nuestro LCD.

Ejemplo

Page 5: El Display LCD

view plain print ?

1. //Para un display de 2x16  2. #include <LiquidCrystal.h>;  3. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa

mos la configuración,  4. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)  5. LiquidCrystal lcd(2,3,4,9,10,11,12);  6. void setup(){  7.     lcd.begin(2,16);  8. }  9. void loop(){  10.     lcd.print('HOLA MUNDO');  11. }  

Clear

Descripción

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

Sintaxis

lcd.clear()

Parametros

SIN PARAMETROS

Ejemplo view plain print ?

1. #include <LiquidCrystal.h>  2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa

mos la configuración,  3. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)  4. LiquidCrystal lcd(2,3,4,9,10,11,12);  5. void setup(){  6.     lcd.begin(2,16);  7. }  8. void loop(){  9.     //escribimos un texto  10.     lcd.print('HOLA MUNDO');  11.     //Esperamos  12.     delay(1000);  13.     //Y lo borramos  14.     lcd.clear();  

Page 6: El Display LCD

15. }                 

Home

Descripción

Coloca el cursor en la esquina superior derecha del display.

Sintaxis

lcd.home();

Parametros

SIN PARAMETROS

Ejemplo

view plain print ?

1. #include <LiquidCrystal.h>  2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa

mos la configuración,  3. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)  4. LiquidCrystal lcd(2,3,4,9,10,11,12);  5. void setup(){  6. lcd.begin(2,16);  7. }  8. void loop(){  9. //escribimos un texto  10. lcd.print('HOLA MUNDO');  11. //Esperamos  12. delay(1000);  13. //volvemos al principio del display  14. lcd.home();  15. //volvemos a escribir encima  16. lcd.print('Que gusto verte');  17. }  

Write

Descripción

Escribe un carácter en el Display.

Page 7: El Display LCD

Sintaxis

lcd.write(caracter);

Parametros

variable lcd

carácter: el carácter que queremos mostrar por pantalla

Ejemplo

view plain print ?

1.       2. #include <LiquidCrystal.h>  3. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa

mos la configuración,  4. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)  5. LiquidCrystal lcd(2,3,4,9,10,11,12);  6. void setup(){  7.     lcd.begin(2,16);  8. }  9. void loop(){  10.     if (Serial.available()) {  11.     lcd.write('a');  12. }  13.    

Blink

Descripción

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

Sintaxis

lcd.blink()

lcd.noBlink()

Parametros

SIN PARAMETROS

Ejemplo

view plain print ?

Page 8: El Display LCD

1. #include <LiquidCrystal.h>  2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa

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

Cursor

Descripción

Muestra un cursor con forma de guion bajo.

Sintaxis

lcd.Cursor()

lcd.noCursor()

Parametros

SIN PARAMETROS

Ejemplo

view plain print ?

1. #include <LiquidCrystal.h>  2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa

mos la configuración,  3. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)  4. LiquidCrystal lcd(2,3,4,9,10,11,12);  5. void setup() {  6. // Escribimos un texto en el LCD.  7. lcd.print("HOLA MUNDO");  

Page 9: El Display LCD

8. }  9. void loop() {  10. // Activamos la visualización del cursor  11. lcd.noCursor();  12. //Hacemos una pausa para ver el efecto  13. delay(500);  14. // Desconectamos la visualización del cursor  15. lcd.cursor();  16. //Hacemos una pausa para ver el efecto.  17. delay(500);  18. }  

Display

Descripción

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 apagalo 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()

Parametros

SIN PARAMETROS

Ejemplo

view plain print ?

1. #include <LiquidCrystal.h>  2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa

mos la configuración,  3. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)  4. LiquidCrystal lcd(2,3,4,9,10,11,12);  5. void setup() {  6.     // Escribimos un texto en el LCD.  7.     lcd.print("HOLA MUNDO");  8. }  9. void loop() {  

Page 10: El Display LCD

10.     // Apagamos el Display:  11.     lcd.noDisplay();  12.     delay(500);  13.     // Encendemos el Display:  14.     lcd.display();  15.     delay(500);  16. }  

Text Direction

Descripción

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()

Parametros

SIN PARAMETROS

Ejemplo

view plain print ?

1. #include <LiquidCrystal.h>  2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa

mos la configuración,  3. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)  4. LiquidCrystal lcd(2,3,4,9,10,11,12);  5. void setup() {  6. // Escribimos un texto en el LCD.  7.     lcd.print("HOLA");  8. }  9. void loop() {  10.     //Hacemos que escriba a la izquierda del cursor.  11.     lcd.rightToLeft();  12.     lcd.print("izq");  13.     delay(500);  14.     //Hacemos que escriba a la derecha.  15.     lcd.leftToRight();  

Page 11: El Display LCD

16.     lcd.print("dcha");  17.     delay(500);  18. }  

Autoscroll

Descripción

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()

Parametros

SIN PARAMETROS

Ejemplo

view plain print ?

1. //Este ejemplo esta inspirado en el ejemplo que facilita www.arduino.cc entre sus tutoriales.  

2. #include <LiquidCrystal.h≶  3. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa

mos la configuración,  4. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)  5.   6. LiquidCrystal lcd(2,3,4,9,10,11,12);  7.   8. void setup() {  9.     // Escribimos un texto en el LCD.  10.     lcd.print("HOLA");  11. }  12.   13. void loop() {  14.     // Nos colocamos en la esquina superior izquierda  15.     lcd.setCursor(0, 0);  16.     // Escribimos los numeros del 0 al 9  17.   

Page 12: El Display LCD

18.     for (int numero = 0; numero < 10; numero++) {  19.     lcd.print(numero);  20.     delay(500);  21.     }  22.   23.     // Nos dirimos a la esquina inferior derecha.  24.     lcd.setCursor(16,1);  25.     // activamos el autoscroll para que mueva los caracteres segun escribimos.  26.     lcd.autoscroll();  27.     // volvemos a escribir los numeros del 0 al 9  28.     for (int numero = 0; numero < 10; numero++) {  29.         lcd.print(numero);  30.         delay(500);  31.     }     32. }  

SetCursor

Descripción

Esta función sirve para posicionar el cursor del LCD, o lo que es lo mismo, para decir donde queremos escribir cada vez.

El primer parámetro del paréntesis es la posición en X ( es decir, en horizontal, más a la izquierda o más a la derecha) El segundo es la

posición en Y ( más arriba o más abajo).

Por lo tanto, en un Display de 2x16 podremos poner como primer parámetro en el paréntesis un numero del 0 al 15 (cuanto más alto el numero, mas a la derecha) y en el segundo un numero del 0 (arriba) al 1 (abajo)

Por ejemplo:

lcd.setCursor(0, 0); // arriba a la izquierda

lcd.setCursor(15, 0); // arriba a la derecha

lcd.setCursor(0, 1); // abajo a la izquierda

lcd.setCursor(15, 1); // abajo a la derecha

Sintaxis

lcd.setCursor(fila, columna);

Page 13: El Display LCD

Parametros

fila:La Fila del pixel que deseamos seleccionar.

columna:La columba del pixel que queremos seleccionar.

Ejemplo

view plain print ?

1. #include <LiquidCrystal.h≶  2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa

mos la configuración,  3. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)  4.   5. LiquidCrystal lcd(2,3,4,9,10,11,12);  6.   7. void setup() {  8.     // Escribimos un texto en el LCD.  9.     lcd.print("HOLA");  10. }  11.   12. void loop() {  13.   14. //Empezamos en la esquina superior izquierda  15. lcd.setCursor(0,0);  16. lcd.print("HOLA");  17. delay(500);  18.   19. //Nos movemos a la posición 5 en la fila de abajo  20. lcd.setCursor(5,1);  21. lcd.print("HOLA");  22. delay(500);  23.   24. //Ahora a la 10 de la fila de arriba  25. lcd.setCursor(10,0);  26. lcd.print("HOLA");  27. delay(500);  28.   29. //Esquina inferior izquierda  30. lcd.setCursor(0,2);  31. lcd.print("HOLA");  32. delay(500);  33.   34. //octava posición, primera fila  35. lcd.setCursor(8,0);  36. lcd.print("HOLA");  

Page 14: El Display LCD

37. delay(500);  38.   39. //Tercera posicion de la primera fila  40. lcd.setCursor(3,0);  41. lcd.print("HOLA");  42. delay(500);  43.   44. //Misma posición en horizontal, pero en la segunda fila  45. lcd.setCursor(0,1);  46. lcd.print("HOLA");  47. delay(500);  48.   49. //En la diagonal con respecto al anterior  50. lcd.setCursor(11,0);  51. lcd.print("HOLA");  52. delay(500);  53.   54. }  

Este otro muestra el numero de la fila en la que se encuentra.

view plain print ?

1. #include <LiquidCrystal.h>;  2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa

mos la configuración,  3. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)  4. LiquidCrystal lcd(2,3,4,9,10,11,12);  5. //Creamos las constantes de los limites del Display, es importante recordar que EMP

EZAMOS A CONTAR DESDE 0, NO DESDE 1 COMO ESTAMOS ACOSTUMBRADOS.  

6. //Creamos una constante, una con el numero de filas que tiene nuestro Display.  7. const int numFilas = 15;  8. //Creamos otra con el numero de columnas.  9. const int numColumnas =1;  10. void setup() {  11.     // Escribimos un texto en el LCD.  12.     lcd.print("HOLA");  13. }  14.   15. void loop() {  16.     // Con un bucle for vamos recorriendo todas las columnas.  17.     for (int columna = 0; columna < numColumnas; columna++){  18.         //Un segundo bucle recorre las filas.  19.         for (int fila = 0; fila < numFilas; fila++) {  20.             //Colocamos el cursos donde corresponde.  21.             lcd.setCursor(fila,0);  

Page 15: El Display LCD

22.             //Mostramos la posicion en la que estamos, para ello utilizaremos la misma variable que cuenta las vueltas que da el bucle, ya que empieza y acaba en los limites del display  

23.             lcd.print(fila);  24.             //Una pequeña pausa para que veamos como aparecen poco a poco.  25.             delay(500);  26.         }  27.     }  28. }  

Scroll

Descripción

Desplaza el texto escrito en el Display.

ScrollDisplayLeft(): Desplaza el texto hacia la izquierda.

ScrollDisplayRight() : Desplaza el texto hacia la derecha.

Sintaxis

lcd.ScrollDisplayLeft()

lcd.ScrollDisplayRight()

Parametros

SIN PARAMETROS

Ejemplo

view plain print ?

1. #include <LiquidCrystal.h>  2.   3. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa

mos la configuración,  4. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)  5.   6. LiquidCrystal lcd(2,3,4,9,10,11,12);  7.   8. void setup() {  9.     // Escribimos un texto en el LCD.  10.     lcd.print("HOLA");  11. }  12.   13. void loop() {  

Page 16: El Display LCD

14.     lcd.print("A");  15.     //Este bucle "arrastra" la A de un lado al otro del display, una posicion cada segun

do.  16.     for (int mover= 0; mover <15; mover++){  17.         lcd.scrollDisplayLeft();  18.         delay(1000);  19.     }  20.     //Como hemos dejado la A en el extremo derecho de la pantalla, la tomamos desd

e ahí y la arrastramos a la izquierda 1 posición cada segundo hasta el comienzo  21.     for (int mover = 15; mover <0; mover--){  22.         lcd.scrollDisplayRight();  23.         delay(1000);  24.     }  25. }  

CreateChar

Descripción

La idea de esta función es la de crear “emoticonos” en el LCD, puedes crear un máximo de 8, que quedan numerados del 0 al 7 y después utilizarlos mediante esta función.

Sintaxis

lcd.createChar(num, nombre)

Parametros

num: Que carácter de los creados quieres usar.

Nombre: nombre que se le ha puesto al emoticono

Ejemplo

view plain print ?

1. #include <LiquidCrystal.h>  2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa

mos la configuración,  3. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)  4. LiquidCrystal lcd(2,3,4,9,10,11,12);  5.   6. //Creamos el emoticono, en este caso una carita sonriente.  7.   8. byte smiley[8] = {  9.     B00000,  10.     B10001,  11.     B00000,  

Page 17: El Display LCD

12.     B00000,  13.     B10001,  14.     B01110,  15.     B00000,  16. };  17.   18. void setup() {  19.     //asignamos el valor 0 al emoticono smiley  20.     lcd.createChar(0, smiley);  21.     //Configuramos el tamaño del display  22.     lcd.begin(16, 2);    23.     //mostramos en pantalla el emoticono.   24.     lcd.write(0);  25. }  26.   27. void loop() {}