OBJETIVOS
MATERIAL REQUERIDO
[/intro-text]
Un Arduino Mega. | |
Un shield TFT LCD 3.5″ táctil. |
LAS PANTALLAS TÁCTILES
A estas alturas no habrá nadie que lea esto que no haya utilizado una pantalla táctil hoy mismo y varias veces seguramente, en el teléfono, la tablet, el PC, un cajero, o al sacar el bono del metro, por ejemplo. Y es que estos dispositivos se han hecho un hueco en nuestra sociedad a la velocidad del rayo, por su comodidad y facilidad de uso para prácticamente cualquier persona, desde niños muy pequeños a personas mayores.
Normalmente existen dos tecnologías diferentes a la hora de fabricarlas, resistivas y capacitivas.
Las resistivas están compuestas por varias capas, de forma que al presionar sobre ella dos capas entran en contacto, se produce un cambio en la corriente eléctrica y detectamos la pulsación. Esto hace que las pantallas sean menos brillantes, más gruesas y pesadas.
Por otro lado, no les afecta ni el polvo ni el agua salada y se pueden usar con cualquier objeto, un dedo, un stylus o cualquier cosa que tengáis a mano (que no sea muy afilado o la pantalla se rallará).
Las capacitivas están compuestas de una capa con aislamiento eléctrico (como el cristal) cubierto de un material conductor transparente. Como nuestra piel es conductora, al tocar la pantalla se crea una distorsión eléctrica que podemos medir y detectar la pulsación. Este tipo de pantallas sólo podemos usarlas con el dedo o punteros o periféricos hechos de materiales especiales.
La pantalla que estamos utilizando nosotros es de tipo resistiva.
DESCARGAR Y PROBAR LA LIBRERÍA
De la misma forma que en la sesión anterior, las librerías que se utilizan para este tipo de pantallas táctiles son muy genéricas, y como suele decirse, quien mucho abarca, poco aprieta. Así que en Prometec hemos modificado la librería para que funcione como es debido con este modelo de pantalla. Podéis descargarla aquí: URTouch. Y si no tenéis la librería que utilizamos en la sesión anterior para utilizar la pantalla la tenéis aquí: UTFT.
Para comprobar que funciona todo correctamente vamos a hacer un programa que nos muestre en la pantalla las coordenadas que toquemos en cada momento. Recordad que las resolución de la pantallas es 480×320, así que las coordenadas para las pulsaciones irán de 0 a 479 para el lado ancho de la pantalla y de 0 a 319 para la parte más estrecha.
Como siempre, empezaremos incluyendo las librerías que vamos a usar, y declararemos dos instancias, una para la pantalla y otra para el táctil. Además tenemos que incluir las fuentes que usaremos para el texto.
#include <URTouch.h> #include <UTFT.h> // Set the pins to the correct ones for your development board // ----------------------------------------------------------- // Standard Arduino Uno/2009 Shield : <display model>,19,18,17,16 // Standard Arduino Mega/Due shield : <display model>,38,39,40,41 UTFT lcd(ILI9481, 38, 39, 40, 41); // Initialize touchscreen // ---------------------- // Set the pins to the correct ones for your development board // ----------------------------------------------------------- // Standard Arduino Mega/Due shield : 6, 5, 4, 3, 2 URTouch tactil( 6, 5, 4, 3, 2); extern uint8_t BigFont[];
En el setup tenemos que inicializar la pantalla como hicimos en la sesión anterior. Además fijaremos el color del fondo de la pantalla y la fuente y el color texto que mostraremos.
Al inicializar la funcionalidad táctil tenemos que elegir la orientación de la pantalla. Si la queremos usar en horizontal le pasaremos el parámetro lo dejamos vacío o le pasamos «LANDSCAPE», y si la queremos usar en vertical, «PORTRAIT».
void setup() { lcd.InitLCD(); tactil.InitTouch(PORTRAIT); lcd.clrScr(); lcd.setFont(BigFont); lcd.setColor(VGA_WHITE); lcd.fillScr(VGA_BLACK); }
Y en el loop comprobaremos si se ha detectado alguna pulsación y, si la ha habido, leeremos los valores y los mostraremos en la pantalla.
void loop() { while (tactil.dataAvailable()) { tactil.read(); lcd.printNumI(tactil.getX(), CENTER, 100); lcd.printNumI(tactil.getY(), CENTER, 150); } delay(50); lcd.clrScr(); }
Podéis descargar el programa completo aquí: Mostrar_coordenadas. Ahora sólo queda probarlo. No utilicéis el dedo, usad alguna cosa que tengáis que tenga la punta fina, a poder ser un stylus o algo parecido para tener más precisión. Deberíais ver algo como esto:
PROBAR ALGÚN EJEMPLO
Una vez hemos entendido cómo funciona, vamos a abrir algún ejemplo para comprobar que todo funcione correctamente. Eso sí, no caigáis en la tentación de utilizar el ejemplo que viene para calibrar la pantalla. Como dijo el almirante Ackbar durante la batalla de Endor: «¡Es una trampa!», y si seguís sus instrucciones os va a dejar de funcionar. Esta preparado para pantallas más pequeñas, y si utilizáis los valores que os da para modificar la librería, dejará de funcionar correctamente.
Por lo demás hay dos ejemplos interesantes, URTouch_ButtonTest y URTouch_QuickPaint. El primero de ellos tiene una serie de botones con números con el que podréis comprobar que realmente detecta correctamente la pulsación. El segundo nos permite dibujar en la pantalla seleccionando diferentes colores.
Lo que es muy importante es que recordéis cambiar el driver al ILI9481 y los pines para el Mega si fuera necesario, y lo mismo para los pines del táctil.
Ahora ya estamos en disposición de crear nuestra propia interfaz con la que podamos interactuar de forma táctil, aunque si no lo tenéis del todo claro tranquilos, que dedicaremos más sesiones a esta pantalla.
Resumen de la sesión
En esta sesión hemos aprendido varias cosas importantes: