EL MÉTODO LiquidCrystal()
Es el constructor de la clase LyquidCrystal
. Permite crear un objeto de esta clase, que se usará para gestionar el dsiplay LCD. Como argumentos recibe una serie de números que se refieren a pines concretos de la placa Arduino, conectados a diferentes pines del display.
LiquidCrystal MiDisplay (12, 11, 5, 4, 3, 2);
Los dos primeros números (el 12 y el 11) se refieren a los pines conectado a los puntos RS y E del display. Los cuatro últimos números se refieren a los pines de D4 a D7 del bus de datos del display. En general, esta configuración es la más simple y típica. No obstante, este constructor admite otras listas de argumentos, cómo podemos ver a continuación:
LiquidCrystal(Rs, E, D4, D5, D6, D7);
LiquidCrystal(Rs, rw, E, D4, D5, D6, D7);
LiquidCrystal(Rs, E, D0, D1, D2, D3, D4, D5, D6, D7);
LiquidCrystal(Rs, rw, E, D0, D1, D2, D3, D4, D5, D6, D7);
De lo que se trata, como podemos deducir de las líneas de arriba, es que podemos especificar los pines de Arduino que se conectan a distintos terminales del display. En el ejemplo del artículo 12 solo necesitábamos los pines de la primera configuración del constructor. En otros montajes, o con otros modelos de displays, necesitaremos otras configuraciones.
Esto es lo que, en programación, se conoce cómo sobrecarga de métodos. Es hacer que un método actúe en diferentes formas según el número de argumentos que le pasemos, o el tipo de estos. Así, en el caso que nos ocupa, el método constructor de esta clase nos dará acceso a más o menos pines del display en uso, según el número de argumentos que le pasemos. En sucesivos tutoriales veremos más ejemplos. |
EL MÉTODO begin()
Como hemos comentado durante la descripción del primer sketch, este método es necesario para inicializar el display. Recibe dos argumentos: el primero es la anchura en caracteres y el segundo la altura (número de filas) del display. También posiciona el cursor en el primer carácter de la primera fila.
EL MÉTODO clear()
Limpia el display y posiciona el cursor en el primer carácter de la primera fila.
EL MÉTODO home()
Sitúa el cursor en el primer carácter de la primera fila, sin borrar el display.
EL MÉTODO setCursor()
Posiciona el cursor en una ubicación específica del display. Recibe dos argumentos. El primero se refiere al carácter de la fila y el segundo a la fila. Ten en cuenta que tanto los caracteres como las filas se empiezan a contar desde 0, no desde 1.
EL MÉTODO write()
Escribe una cadena (bien sea un objeto de tipo String o una matriz de caracteres) en el display. Como argumento recibe la cadena a mostrar.
EL MÉTODO print()
Actúa de un modo similar a write()
, pero con la posibilidad de enviar directamente números enteros al display, en distintas bases de numeración. Para enviar números en distintas bases de numeración se emplea la siguiente sintaxis:
ObjetoLCD.print(numero, BASE);
BASE
es una constante que puede ser BIN
(binario), OCT
(octal), DEC
(decimal) o HEX
(hexadecimal). Podemos ver un ejemplo de uso en el siguiente sketch:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#include <LiquidCrystal.h>
LiquidCrystal LCD (12, 11, 5, 4, 3, 2);
const int pulsador = 6;
int estadoCom = 0;
int estadoComPrevio = 0;
int numero = 35;
int indiceDeBases = 0;
void setup() {
pinMode (pulsador, INPUT);
LCD.begin(16,2);
LCD.write("Inicio:");
LCD.setCursor(0, 1);
LCD.write("Fin de setup");
}
void loop() {
estadoCom = digitalRead(pulsador);
if (estadoCom != estadoComPrevio){
if (estadoCom == LOW){
LCD.clear();
LCD.setCursor(0, 0);
LCD.write("El numero 35 en ");
LCD.setCursor(0, 1);
switch(indiceDeBases){
case 0:
LCD.write("bin es: ");
LCD.print(numero, BIN);
break;
case 1:
LCD.write("octal es: ");
LCD.print(numero, OCT);
break;
case 2:
LCD.write("decimal es: ");
LCD.print(numero, DEC);
break;
case 3:
LCD.write("hexa es: ");
LCD.print(numero, HEX);
break;
}
indiceDeBases ++;
if (indiceDeBases > 3) indiceDeBases = 0;
}
}
estadoComPrevio = estadoCom;
}
|
Y ahora quizá te preguntes por qué no hemos usado este método en los ejemplos del
artículo 12. La primera razón es que sólo trabaja con números enteros (
int
o
long
), no con números flotantes. Por otro lado, queríamos ver como trabajar con números en el display, tratándolos como cadenas. En realidad, el método
print()
convierte internamente un valor numérico a una cadena, para que el display pueda mostrarlo.
LOS MÉTODOS cursor() y noCursor()
Estos métodos no reciben argumentos. El primero se emplea para que el cursor sea visible en el display como un signo de subrayado. El segundo método hace el cursor invisible (es el estado por defecto).
LOS MÉTODOS blink() y noBlink()
Cuando el cursor está visible por haber usado el método cursor(), podemos hacer que aparezca parpadeante usando el método blink()
. Si usamos el método noBlink()
el cursor no parpadeará.
LOS MÉTODOS display() y noDisplay()
Si usamos el método noDisplay()
el display se apagará. Podemos reactivarlo con el método display()
. Estos métodos no reciben argumentos.
LOS MÉTODOS autoscroll() y noAutoscroll()
Cuando se completa el espacio del display destinado a mostrar texto o datos, lo que “sobra” no se verá (aparece truncado). Si activamos el método autoscroll()
, el contenido más antiguo se desplazará, desapareciendo por el principio de la línea, para dejar sitio al final de la misma para los nuevos contenidos. Con el método noAutoscroll()
restablecemos el comportamiento por defecto.
LOS MÉTODOS scrollDisplayLeft() y scrollDisplayRight()
Cuando usamos estos métodos, el contenido se desplaza un carácter a la izquierda o a la derecha. Además, según el que empleemos, si activamos el método autoscroll()
los contenidos se desplazarán en el sentido indicado.
LOS MÉTODOS leftToRight() y rightToLeft()
Establecen el sentido de la escritura, por si el mensaje se envía en idiomas, como el árabe, que se escriben “al revés” que el nuestro.
EL MÉTODO createChar()
El display LCD puede mostrar, por defecto, un conjunto bastante limitado de caracteres. La datasheet del display está en
este enlace y contiene, entre otra información, el juego de caracteres que incorpora el display por defecto. La datasheet está en inglés, que es el idioma en el que publican estos documentos la mayoría de los fabricantes. Míralo por el lado bueno. Algunos fabricantes orientales solo publican material en chino, coreano, etc.
Por ejemplo, en español, letras como la ñ o las acentuadas no pueden mostrarse directamente, ya que aparecen como guarismos sin significado.
Con este método podemos crear hasta ocho caracteres adicionales, identificados por números del 0 al 7, para sacar mensajes concretos. Los caracteres se crean a partir de una matriz de cinco puntos de ancho por ocho de alto. Para crear el carácter que desees e implementarlo en tu código, visita: http://gotencool.com/lcdchar/. Esta es una herramienta online muy práctica, que nos permite diseñar un carácter a medida en una matriz de 5 x 8 (que es como se representan los caracteres en los displays LCD), y nos da el código Arduino necesario para implementar el carácter diseñado en nuestro sketch.
Comentarios
Publicar un comentario