-
El Display LCD
Existen muchos tipos de LCD (distintos
tamaos,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.
Conexin
Las patillas tienen estas funciones:
NPin Nombre Funcin
1 GND Tierra
http://www.trastejant.es/tutoriales/arduino/img/lclcd/Tiposdelcd.jpg
-
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 Seleccin 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
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:
http://www.trastejant.es/tutoriales/arduino/controlContraste.html
-
Esta Librera, llamada LiquidCrystal, nos proporciona gran numero
de herramientas para
trabajar con un LCD. Estas son las fucciones que se incluyen en
la versin 1.0.
Print
Descripcin
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 tuvisemos 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 plainprint?
1. #include ; 2. //Creamos el objeto "lcd" de de la libreria
LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
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
Descripcin
Esta funcin sirve para especificar el tamao 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
http://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.html
-
view plainprint?
1. //Para un display de 2x16 2. #include ; 3. //Creamos el
objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y
le pasa
mos la configuracin,
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
Descripcin
Esta funcin borra todo lo que estuviese escrito en nuestro
LCD
Sintaxis
lcd.clear()
Parametros
SIN PARAMETROS
Ejemplo
view plainprint?
1. #include 2. //Creamos el objeto "lcd" de de la libreria
LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
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();
http://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.html
-
15. }
Home
Descripcin
Coloca el cursor en la esquina superior derecha del display.
Sintaxis
lcd.home();
Parametros
SIN PARAMETROS
Ejemplo
view plainprint?
1. #include 2. //Creamos el objeto "lcd" de de la libreria
LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
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
Descripcin
Escribe un carcter en el Display.
http://www.trastejant.es/tutoriales/arduino/homehttp://www.trastejant.es/tutoriales/arduino/homehttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.html
-
Sintaxis
lcd.write(caracter);
Parametros
variable lcd
carcter: el carcter que queremos mostrar por pantalla
Ejemplo
view plainprint?
1. 2. #include 3. //Creamos el objeto "lcd" de de la libreria
LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
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
Descripcin
Muestra un cursor con forma de bloque, como el que solan mostrar
algunos ordenadores
antiguos.
Sintaxis
lcd.blink()
lcd.noBlink()
Parametros
SIN PARAMETROS
Ejemplo
view plainprint?
http://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.html
-
1. #include 2. //Creamos el objeto "lcd" de de la libreria
LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
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
Descripcin
Muestra un cursor con forma de guion bajo.
Sintaxis
lcd.Cursor()
lcd.noCursor()
Parametros
SIN PARAMETROS
Ejemplo
view plainprint?
1. #include 2. //Creamos el objeto "lcd" de de la libreria
LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
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");
http://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.html
-
8. } 9. void loop() { 10. // Activamos la visualizacin del
cursor 11. lcd.noCursor(); 12. //Hacemos una pausa para ver el
efecto 13. delay(500); 14. // Desconectamos la visualizacin del
cursor 15. lcd.cursor(); 16. //Hacemos una pausa para ver el
efecto. 17. delay(500); 18. }
Display
Descripcin
Esta funcin 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 informacin que estbamos
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 energa. podramos apagalo tras un
periodo de inactividad y
volver a encenderlo exactamente en el mismo sitio cuando el
usuario vuelva a presionar
algn botn.
Sintaxis
lcd.display() lcd.noDisplay()
Parametros
SIN PARAMETROS
Ejemplo
view plainprint?
1. #include 2. //Creamos el objeto "lcd" de de la libreria
LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
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() {
http://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.html
-
10. // Apagamos el Display: 11. lcd.noDisplay(); 12. delay(500);
13. // Encendemos el Display: 14. lcd.display(); 15. delay(500);
16. }
Text Direction
Descripcin
rightToLeft(): Cuando se escribe, las letras aparecen a la
izquierda del cursor. Es como si
en un editor de textos tuvisemos el texto alineado a la
derecha.
leftToRight(): Al contrario que el anterior, las letras aparecen
a la derecha del cursor, la
sensacin que da es la de alineacin a la izquierda.
Sintaxis
lcd.leftToRight()
lcd.rightToLeft()
Parametros
SIN PARAMETROS
Ejemplo
view plainprint?
1. #include 2. //Creamos el objeto "lcd" de de la libreria
LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
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();
http://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.html
-
16. lcd.print("dcha"); 17. delay(500); 18. }
Autoscroll
Descripcin
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 aade una letra.
noAutoscroll() apaga el desplazamiento
Sintaxis
lcd.autoscroll()
lcd.noAutoscroll()
Parametros
SIN PARAMETROS
Ejemplo
view plainprint?
1. //Este ejemplo esta inspirado en el ejemplo que facilita
www.arduino.cc entre sus tutoriales.
2. #include
-
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
Descripcin
Esta funcin sirve para posicionar el cursor del
LCD, o lo que es lo mismo, para decir donde
queremos escribir cada vez.
El primer parmetro del parntesis es la
posicin en X ( es decir, en horizontal, ms a la
izquierda o ms a la derecha) El segundo es la
posicin en Y ( ms arriba o ms abajo).
Por lo tanto, en un Display de 2x16 podremos poner como primer
parmetro en el
parntesis un numero del 0 al 15 (cuanto ms 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);
-
Parametros
fila:La Fila del pixel que deseamos seleccionar.
columna:La columba del pixel que queremos seleccionar.
Ejemplo
view plainprint?
1. #include
-
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 posicin 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 plainprint?
1. #include ; 2. //Creamos el objeto "lcd" de de la libreria
LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
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 ACOSTUMB
RADOS.
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);
http://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.html
-
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 pequea pausa para que veamos como
aparecen poco a poco. 25. delay(500); 26. } 27. } 28. }
Scroll
Descripcin
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 plainprint?
1. #include 2. 3. //Creamos el objeto "lcd" de de la libreria
LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
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() {
http://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.html
-
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
-
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 tamao del display
22. lcd.begin(16, 2); 23. //mostramos en pantalla el emoticono. 24.
lcd.write(0); 25. } 26. 27. void loop() {}