Cuando se trata de crear una interfaz humano máquina podemos optar por muchas técnicas en función de cual sea el objetivo que se persigue. Una de las más extendidas a día de hoy es el uso de TFT bien sea táctil o no. Vamos a repasar los métodos que tenemos a nuestra disposición en la librería TFT para el uso de TFT en Arduino.
Librerías para pantallas TFT en Arduino
Lo primero que debemos tener en cuenta es que necesitamos varias librerías para poder usar la pantalla TFT en Arduino. La primera es «TFT» y la segunda es «SPI». Por suerte, ambas están incluidas entre las librerías que vienen instaladas con el IDE de Arduino. Si tienes instalado el IDE, ya tienes las librerías instaladas.
La librería SPI nos permitirá comunicarnos con la pantalla, ya que la mayoría de estas TFT usan SPI (Serial Peripheral Interface). Esta comunicación serie está compuesta por líneas de datos, de reloj, de selección y alguna otra auxiliar.
La librería TFT es la encargada de manipular la pantalla: dibujar, escribir y cargar imágenes en ella, en resumen casi todo lo que necesitamos para realizar el uso de TFT.
Creación del objeto e configuración de pines
Lo primero que debemos hacer, después de incluir las librerías y en todos los casos, es crear el objeto de la TFT e indicarle al constructor que pines usaremos para las líneas especiales de la pantalla y que no son las del SPI.
Debemos configurar los pines CS (chip select), RST (reset) y DC.
Puedes aprender un poco más sobre el uso de TFT y su conexión en este otro artículo de iniciación a su uso
Un ejemplo clásico de configuración es:
#define CS 10 #define DC 9 #define RESET 8
Por otro debemos crear el objeto y pasar al constructor los pines anteriores
TFT myScreen = TFT(CS, DC, RESET);
Inicialización de la pantalla TFT
En el setup debemos inicializar la pantalla, lo haremos una sola vez con:
pantalla.begin();
Puede ser que debamos cambiar la orientación de la pantalla debido a que la tengamos en vertical, para ello usamos el siguiente método. 90 es el ángulo de giro.
pantalla.setRotation(90);
Métodos para el uso de TFT
pantalla.background(rojo, verde, azul);
Elimina todo lo que haya en la pantalla y pone de fondo el color que le indiquemos como combinación RGB.
Rojo, verde y azul con parámetros que indican el color del fondo. Son de tipo entero y su valor puede ir desde 0 a 255.
pantalla.stroke(rojo, verde, azul);
Se usa para indicar el color del borde de el siguiente objeto. Por ejemplo para indicar el color del borde de un rectángulo, primero se llama a stroke y luego se dibuja el rectángulo.
Rojo, verde y azul con parámetros que indican el color de la línea. Son de tipo entero y su valor puede ir desde 0 a 255.
pantalla.noStroke();
Todas las formas que se dibujen después de noStroke, no tendrán línea de borde exterior.
pantalla.fill(rojo, verde, azul);
Se usa para seleccionar el color de relleno de los objetos. Por ejemplo para seleccionar el color de relleno de un círculo, primero se llama a fill y luego se dibuja el círculo.
Rojo, verde y azul con parámetros que indican el color de relleno. Son de tipo entero y su valor puede ir desde 0 a 255.
pantalla.noFill();
Todas las formas que se dibujen después de llamar a noFill no tendrán relleno
pantalla.text(texto, xPos, yPos);
Se usa para escribir texto
– texto: El texto a mostrar
– xPos: La posición en el eje X para empezar a escribir
– yPos: La posición en el eje Y para empezar a escribir
pantalla.setTextSize(size);
Fija el tamaño del texto que se escriba después de llamar a setTextSize()
– Size: Tipo entero comprendido entre 1 y 5. (1 = 10 pixeles; 2 = 20 pixeles; etc)
pantalla.point(xPos, yPos);
Dibuja un punto en la posición indicada
– xPos: Posición en eje X
– yPos: Posición en eje Y
pantalla.line(xStart, yStart, xEnd, yEnd);
Dibuja una línea entre los puntos indicados
– xStart: Posición en eje X de inicio
– yStart: Posición en eje Y de inicio
– xEnd: Posición en eje X de fin
– yEnd: Posición en eje Y de fin
pantalla.rect(xStart, yStart, width, height);
Dibuja un rectángulo
– xStart: Posición en eje X de inicio
– yStart: Posición en eje Y de inicio
– width: Ancho del rectángulo
– height: Altura del rectángulo
pantalla.circle(xPos, yPos, radius);
Dibuja un círculo
– xPos: Posición del centro del circulo en el eje X
– yPos: Posición del centro del círculo en el eje Y
– radius: radio del círculo
pantalla.width();
Devuelve un valor tipo int que indica el ancho en píxeles de la pantalla.
pantalla.height();
Devuelve un valor tipo int que indica el alto en píxeles de la pantalla.
pantalla.loadImage(name);
Carga una imagen desde la tarjeta SD, debe haberse importado la librería SD y haberse inicializado la tarjeta SD.
– name: El nombre de la imagen que se busca en la raíz de la tarjeta SD.
Devuelve un objeto tipo PImage;
pantalla.image(image, xPos, yPos);
Dibuja una imagen en la pantalla
– Image: Objeto de tipo imagen (creado antes del setup y cargado con loadImage();)
– xPos: Posición en el eje X
-yPos: Posición en el eje Y
Tienes más información en la web de arduino sobre el uso de la librería.