LA LIBRERÍA TFT

Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail

Esta librería forma parte del núcleo de Arduino, y se usa para gestionar pantallas TFT, tanto en tarjetas Arduino UNO, Leonardo, Mega, etc. como en tarjetas Esplora.

LOS CONSTRUCTORES

Esta líbrería implementa dos clases (en realidad, tres, pero de la tercera hablaremos al final del artículo, porque sirve a otros propósitos) . Ambas ofrecen los mismos métodos y con los mismos nombres. Por un lado tenemos la clase TFT, que usaremos para representación visual en pantallas TFT conectadas, mediante cableado y, en su caso, protoboard, a tarjetas Arduino convencionales. Por el otro lado tenemos la clase EsploraTFT, más sencilla de implementar, y que usaremos si nuestra TFT va montada como shield en una tarjeta Esplora.

LA CLASE TFT

Esta clase debe ser instanciada en un objeto que representará a la pantalla. Como argumentos, el constructor puede recibir sólo tres, si hacemos la conexión por SPI. Para ello, deberemos incluir en nuestro skecth la librería SPI, que forma parte del IDE de Arduino, y que se usa para facilitar la comunicación serie entre dispositivos. (SPI = Serial Peripheral Interface).

Los pines que hay que definir en este caso son los de la tarjeta Arduino que se vayan a conectar a los pines CS, DC y RESET de la pantalla. El constructor quedaría así;

#define CS 10
#define DC 9
#define RESET 8

En el manual oficial de Arduino se nos dice que, si nuestra tarjeta es la Leonardo, los pines deben ser:

#define CS 7
#define DC 0
#define RESET 1

En todo caso, una vez definidos, creamos el objeto, así:

TFT miPantalla = TFT(CS, DC, RESET);

Si no vamos a usar la librería SPI hay que definir más pines aún: CS, DC, MOSI, SCLK y RESET. El constructor quedaría así:

TFT miPantalla = TFT(CS, DC, MOSI, SCLK, RESET);

A partir de aquí, todos los métodos que vamos a conocer se emplearán sobre el objeto que hemos creado (en los ejemplos, miPantalla).

ATENCIÓN. Recuerda que los colores, en esta clase, se establecen como valores entre 0 y 255, en la secuencia azul, verde, rojo. Si estás familiarizado con la notación rojo, verde, azul, habitual en todos los entornos de programación, te encontrarás con “sorpresas cromáticas”.

 

ATENCIÓN. Los métodos de estas clases se invocan de modo diferente, según estemos usando una tarjeta Arduino convencional o una Esplora. En el primer caso se invocan como objetoTFT.metodo([argumentos]);, dónde objetoTFT es el que hayamos instanciado previamente para gestionar la pantalla, según se detalla más arriba. En el caso de usar una tarjeta Esplora, la invocación será EsploraTFT.metodo([argumentos]);, es decir, directamente desde la clase.

LA CLASE EsploraTFT

Si vamos a usar la pantalla con una tarjeta Arduino Esplora, esta es, sin duda, la mejor opción. No hay que definir pines, ni instanciar la clase, y los métodos se emplean, directamente, a partir de esta. En el artículo correspondiente es la opción que hemos elegido.

EL MÉTODO background()

Este método establece un color de fondo, rellenando la pantalla en dicho color y borrando, en consecuencia, cualquier contenido que pudiera haber. Recibe tres argumentos, que son los valores de azul, verde y rojo que queremos para el color de fondo.

EL MÉTODO begin()

Debe invocarse en la sección setup, para inicializar la pantalla. No recibe argumentos.

EL MÉTODO circle()

Dibuja un círculo en la pantalla. Recibe tres argumentos. Los dos primeros son las coordenadas X e Y del centro y el tercero es el radio. Los tres argumentos se espresan en píxeles. El color de relleno se establece previamente con el método fill(). El color de línea, si la hay, se establecerá con el método stroke(); si no la hay, se especificará con el método noStroke(). Ver más abajo la descripción de estos métodos.

EL MÉTODO fill()

Establece el color de relleno que se usará para las figuras cerradas (rectángulos y círculos) que vayamos a dibujar en lo sucesivo. Si queremos dibujar figuras sin relleno (sólo contornos) podemos establecer el color de relleno al mismo que el fondo de la pantalla, o bien usar el método noFill(). Este método recibe tres argumentos para la intensidad de los colores básicos, de 0 a 255.

EL MÉTODO height()

Este método no recibe argumentos. Nos devuelve la altura en píxeles de la pantalla que estemos empleando.

EL MÉTODO image()

Renderiza una imagen de la tarjeta micro SD en la pantalla. Para ello es preceptivo que, previamente, la imagen se haya almacenado en un objeto de la clase PImage, que se describe más abajo. El proceso se ciñe al siguiente esquema genérico:

PImage objeto_PImage;
objeto_PImage =
EsploraTFT.loadImage("arduino.bmp");

EsploraTFT.image(objeto_PImage, 0, 0);

Cómo ves, este método recibe tres argumentos. El primero es el nombre del objeto de la clase PImage que contiene la imagen. Los otros dos son las coordenadas X e Y de la pantalla donde se situará la esquina superior izquierda de la imagen.

EL MÉTODO line()

Este método traza una línea recta entre dos puntos. Recibe cuatro argumentos, que son las coordenadas X e Y del punto de origen y del punto de finalización. El color se habrá establecido, previamente, con el método stroke().

EL MÉTODO loadImage()

Este método carga una imagen, que esté archivada en la micro SD de la pantalla, y la almacena en un objeto que debe estar creado con la clase PImage, sobre la que hablamos en la última parte de este artículo. El método recibe un argumento con el nombre de la imagen, que es interpretado como matriz de caracteres. Suponiendo que tengamos ya creado el objeto PImage, la forma de cargar una imagen en el mismo sería:

Si usamos una Arduino convencional: objeto_PImage = objetoTFT.loadImage("imagen.bmp");.

Si usamos una tarjeta Esplora: objeto_PImage = EsploraTFT.loadImage("imagen.bmp");.

Este método carga la imagen en el objeto de la clase PImage, paso previo imprescindible para la visualización de la imagen en la pantalla, pero no la visualiza en dicha pantalla.

ATENCIÓN. Las imágenes deberán estar almacenadas en formato bmp de 24 bits. Si no queremos tener problemas de desbordamiento, deberán tener una anchura y altura acordes con las de la pantalla.

EL MÉTODO noFill()

Se emplea para indicar que la próxima figura cerrada (rectángulo o círculo) que se dibuje no tendrá relleno. Cualquier otra figura posterior seguirá dibujándose sin relleno, hasta que cambiemos esta circunstancia mediante el método fill().

EL MÉTODO noStroke()

Sirve para indicar que las figuras que se dibujen en lo sucesivo no tendrán contorno. Evidentemente, hay que tener cuidado con esto. Si establecemos que no habrá contorno y, además, no hay relleno, las figuras no se dibujarán. Además, este método (y su complementario stroke()) afecta a las líneas rectas, puntos y textos. Si ejecutamos este método no podremos visualizar estos elementos, hasta que establezcamos un color de línea.

EL MÉTODO point()

Dibuja un punto en las coordenadas indicadas como argumentos. Los dos argumentos son las coordenadas X e Y del punto. El color será el que hayamos establecido previamente con stroke().

EL MÉTODO rect()

 Dibuja un rectángulo, cuyo color de contorno (si lo hay) y de relleno (si lo hay) depende del uso previo de los métodos stroke(), noStroke(), fill() y noFill(). Este método recibe cuatro argumentos: los dos primeros corresponden a las coordenadas X e Y de la esquina superior izquierda del rectángulo. El tercer argumento establece su anchura y el último la altura.

EL MÉTODO setTextSize()

Este método establece el tamaño de fuente que se va a usar para textos. Recibe un argumento entre 1 y 5 y el tamaño será el argumento multiplicado por 10. Es decir, si fijas el tamaño a 3, la fuente tendrá 30 píxeles de alto. El texto en estas pantallas sólo emplea una fuente, para ahorrar memoria.

EL MÉTODO stroke()

Establece el color de línea para los elementos que se vayan a dibujar a continuación: puntos, texto, líneas rectas o contornos de línea. Recibe tres argumentos que son los valores de 0 a 255 de azul, verde y rojo.

EL MÉTODO text()

Escribe un texto en pantalla. Recibe tres argumentos: el primero es el texto a mostrar, y los otros dos son las coordenadas X e Y dónde se inicia la escritura. Para ver cómo se usa recurre a este artículo.

EL MÉTODO width()

Este método no recibe ningún argumento, y devuelve la anchura de la pantalla en píxeles.

LA CLASE PImage

Esta es la tercera clase que tenemos disponible en la librería TFT. Podemos usarla, tanto si la pantalla va a ir en una tarjeta Arduino convencional cómo en una Esplora, y se ocupa de gestionar el visionado de imágenes que haya en la micro SD de la pantalla.

ATENCIÓN. Esta clase no se ocupa del almacenamiento de imágenes (ni ningún otro tipo de contenidos o datos, si a eso vamos) en la microSD. Para eso está la librería SD de Arduino. Esta clase sólo se ocupa de la visualización de las imágenes almacenadas.

EL CONSTRUCTOR

Cuando vamos a manejar imágenes con esta librería deberemos instanciar la clase PImage en un objeto que usaremos para disponer de las funcionalidades de la clase. Lo hacemos así:

PIMage objeto;

Así de fácil. Ni argumentos, ni valores de retorno. Ya existe el objeto.

EL MÉTODO isValid()

Cuando se ha creado un objeto de la clase PImage, y se ha cargado en el mismo una imagen con el método loadImage() que vimos arriba, siempre es prudente, antes de querer renderizarla en la pantalla, comprobar si es adecuada. Este método hace, exactamente, eso, devolviendo un true si es correcta, o false, en caso contrario. El método se emplea sobre el objeto de la clase PImage que hemos creado con el constructor, así:

PImage objeto_PImage;
correcta = objeto_PImage.isValid();

LOS MÉTODOS height() Y width()

Cuando se ha creado un objeto de la clase PImage, y se ha cargado en el mismo una imagen con el método loadImage() que vimos arriba,poemos obtener las dimensiones de la imagen, en píxeles, mediante estos métodos.

     

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *