Skip to main content

TFT Touch Shield V1.0

El TFT Touch Shield de 2.8" es una pantalla TFT multicolor compatible con Arduino / Arduino Mega con una pantalla táctil resistiva de 4 hilos. Incluye una huella compatible con shield de Arduino para su conexión. El controlador TFT está basado en un IC controlador profesional y con interfaz de datos de 8 bits y control de 4 bits.

Características

  • Compatible con Arduino/Seeeduino, Arduino Mega, y Seeeduino Mega

  • Pantalla QVGA de 2.8" de tamaño

  • Pantalla táctil resistiva

Especificaciones

ElementoMínTípicoMáxUnidad
Voltaje4.555.5VDC
Corriente//250mA
Tamaño del panel LCD2.8 pulgadas
Ángulo de visión60~120Grados
Resolución320x240/
Color LCD65k/
Tipo de retroiluminaciónLED/
IC controlador LCDST7781R/
Tipo de interfazPuerto paralelo ( 8bit Datos + 4bit Control )/
Pantalla táctilPantalla táctil resistiva de 4 hilos/
Área activa43.2*57.3mm
Descarga de contacto ESD±4KV
Descarga de aire ESD±8KV
Dimensiones72.5x54.7x18mm
Peso24±2g

Precauciones

  • No someta el módulo a golpes mecánicos o impactos dejándolo caer.

  • No aplique fuerza excesiva a la superficie de la pantalla o las áreas adyacentes ya que esto puede causar que el tono de color varíe.

Uso de pines en Arduino

(width=undefined)

D0 - Sin usar.

D1 - Sin usar.

D2 - Bit de datos LCD 8.

D3 - Bit de datos LCD 9.

D4 - Bit de datos LCD 10.

D5 - Bit de datos LCD 11.

D6 - Bit de datos LCD 12.

D7 - Bit de datos LCD 13.

D8 - Bit de datos LCD 14.

D9 - Bit de datos LCD 15.

D10 - Pin CS del LCD, activo bajo.

D11 - Pin RS del LCD.

D12 - Pin WR del LCD.

D13 - Pin RD del LCD.

D14(A0) - Pantalla táctil Y-.

D15(A1) - Pantalla táctil X-.

D16(A2) - Pantalla táctil Y+.

D17(A3) - Pantalla táctil X+.

D18(A4) - Sin usar.

D19(A5) - Sin usar.

Uso

Instalación de Hardware

  • Inserte el TFT Touch Shield en Seeeduino como se muestra a continuación.

Programación TFT

La biblioteca TFT proporciona las siguientes Interfaces de Programación de Aplicaciones (API). La biblioteca hace uso del acceso directo a los registros PORT en lugar de las APIs de Arduino. Esto es para aumentar la velocidad de comunicación entre MCU y TFT. En la actualidad, la biblioteca soporta placas compatibles con Arduino, Arduino Mega (1280 o 2560) y Seeeduino ADK Main Board. En Mega el puerto de datos de 8 bits del TFT está distribuido a diferentes pines pertenecientes a diferentes puertos. Esto disminuye la velocidad de dibujo de gráficos cuando se compara con Arduino. La elección de los pines del puerto se basa puramente en la disposición de pines del puerto de Arduino / Mega.

Funciones Generales


setXY(unsigned int poX, unsigned int poY)

Establece la posición del cursor a (poX,poY). Esta función es usada internamente por otras APIs de gráficos.

setPixel(unsigned int poX, unsigned int poY,unsigned int color)

Establece el píxel (poX,poY) al color color. Esta función es usada internamente por otras APIs de gráficos.

Líneas

drawLine(unsigned int x0,unsigned int y0,unsigned int x1,unsigned int y1,unsigned int color)

Dibuja una línea desde el píxel (x0,y0) hasta el píxel (x1,y1) con color color.

drawVerticalLine(unsigned int poX, unsigned int poY,unsigned int length,unsigned int color)

Dibuja una Línea Horizontal de longitud length con color color comenzando desde el píxel (poX,poY).

drawHorizontalLine(unsigned int poX, unsigned int poY,unsigned int length,unsigned int color)

Dibuja una Línea Vertical de longitud length con color color comenzando desde el píxel (poX,poY).

Rectángulo

drawRectangle(unsigned int poX, unsigned int poY, unsigned int length,unsigned int width,unsigned int color)

Dibuja un rectángulo comenzando desde (poX,poY) de longitud length, ancho width y color color.

fillRectangle(unsigned int poX, unsigned int poY, unsigned int length, unsigned int width, unsigned int color)

Dibuja un rectángulo relleno comenzando desde el píxel (poX,poY) de longitud length, ancho width y color color.

Círculo

drawCircle(int poX, int poY, int r,unsigned int color)

Dibuja un círculo en (poX,poY) de radio radius y color color.

fillCircle(int poX, int poY, int r,unsigned int color)

Dibuja un círculo relleno en (poX,poY) de radio radius y color color.

Texto

drawChar(unsigned char ascii,unsigned int poX, unsigned int poY,unsigned int size, unsigned int fgcolor)

Dibuja un carácter comenzando desde (poX,poY) usando la fuente incorporada de tamaño size y con color fgcolor. Esta función es usada por la función drawString().

drawString(char *string,unsigned int poX, unsigned int poY,unsigned int size,unsigned int fgcolor)

Dibuja una cadena de texto comenzando desde (poX,poY) usando la fuente incorporada de tamaño size y con color fgcolor.

Programación de Pantalla Táctil


TFT Touch Shield usa la Biblioteca de Pantalla Táctil Adafruit. Para entender el principio detrás de la pantalla táctil resistiva consulte Enlaces Externos. En resumen, una pantalla táctil resistiva de 4 hilos proporciona dos divisores de voltaje cada uno para el eje X e Y. Al aplicar voltajes apropiados para cada eje y escanear los valores ADC se puede detectar la posición del toque. Estos valores siempre son propensos al ruido. Por lo tanto se usa un filtro digital.

  • Para usar la Biblioteca TouchScreen primero cree un objeto TouchScreen mediante

TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);

Donde XP, YP, XM e YM son pines del puerto ADC conectados a los pines XPlus, YPlus, XMinus e YMinus de la Pantalla Táctil. 300 es la resistencia a través de las placas X.

  • Lea el valor ADC Raw usando

Point p = ts.getPoint();

  • El valor ADC Raw tiene que ser convertido a Coordenadas de Píxel. Esto se hace con la función map. Este mapeo cambia para v0.9 y v1.0. Las aplicaciones de demostración ya se encargan de este mapeo.

p.x = map(p.x, TS_MINX, TS_MAXX, 240, 0); p.y = map(p.y, TS_MINY, TS_MAXY, 320, 0);

  • El siguiente sketch demuestra el uso de la Biblioteca TouchScreen. Esto también puede ser usado para calibrar las coordenadas de la pantalla táctil.

  • Compile y cargue el sketch.

  • Abra el monitor del puerto serie y toque los puntos mostrados en la pantalla.

  • Vea si los valores X e Y mostrados son correctos. Si no, tenemos que recalibrar las coordenadas de la pantalla táctil.

¿Cómo calibrar la pantalla táctil?

  • Los parámetros TS_MINX, TS_MAXX, TS_MINY y TS_MAXY realmente deciden los extremos de la pantalla táctil y realmente forman los parámetros de calibración.

  • Los valores asignados a estas variables son valores ADC medidos (es decir Raw X, Raw Y) cuando tocamos los extremos diagonales de la pantalla táctil.

  • Toque los puntos (0,0) y (239,319) y anote los valores Raw X y Raw Y. Para mejor precisión, pruebe muchas veces y encuentre el valor correcto.

  • TS_MINX corresponde al valor ADC cuando X = 0 ;

  • TS_MINY corresponde al valor ADC cuando Y = 0 ;

  • TS_MAXX corresponde al valor ADC cuando X = 240 -1 es decir 239 ;

  • TS_MAXY corresponde al valor ADC cuando Y = 320 -1 es decir 319 ;

  • Cambie estos parámetros en el sketch, recompile y cargue a Arduino.

  • Repita los pasos anteriores si aún no obtiene valores precisos.

Sketch de Demostración de Pantalla Táctil

// Paint application - Demonstate both TFT and Touch Screen
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#include <stdint.h>
#include <TouchScreen.h>
#include <TFT.h>

#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) // mega
#define YP A2 // must be an analog pin, use "An" notation!
#define XM A1 // must be an analog pin, use "An" notation!
#define YM 54 // can be a digital pin, this is A0
#define XP 57 // can be a digital pin, this is A3

#elif defined(__AVR_ATmega32U4__) // leonardo
#define YP A2 // must be an analog pin, use "An" notation!
#define XM A1 // must be an analog pin, use "An" notation!
#define YM 18 // can be a digital pin, this is A0
#define XP 21 // can be a digital pin, this is A3

#else //168, 328, something else
#define YP A2 // must be an analog pin, use "An" notation!
#define XM A1 // must be an analog pin, use "An" notation!
#define YM 14 // can be a digital pin, this is A0
#define XP 17 // can be a digital pin, this is A3

#endif

//Measured ADC values for (0,0) and (210-1,320-1)
//TS_MINX corresponds to ADC value when X = 0
//TS_MINY corresponds to ADC value when Y = 0
//TS_MAXX corresponds to ADC value when X = 240 -1
//TS_MAXY corresponds to ADC value when Y = 320 -1

#define TS_MINX 140
#define TS_MAXX 900
#define TS_MINY 120
#define TS_MAXY 940

int color = WHITE; //Paint brush color

// For better pressure precision, we need to know the resistance
// between X+ and X- Use any multimeter to read it
// The 2.8" TFT Touch shield has 300 ohms across the X plate

TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300); //init TouchScreen port pins

void setup()
{

Tft.init(); //init TFT library
pinMode(0,OUTPUT);
//Draw the pallet
Tft.fillRectangle(0,0,30,10,BLACK);
Tft.fillRectangle(30,0,30,10,RED);
Tft.fillRectangle(60,0,30,10,GREEN);
Tft.fillRectangle(90,0,30,10,BLUE);
Tft.fillRectangle(120,0,30,10,CYAN);
Tft.fillRectangle(150,0,30,10,YELLOW);
Tft.fillRectangle(180,0,30,10,WHITE);
Tft.fillRectangle(210,0,30,10,GRAY1);

}

void loop()
{

// a point object holds x y and z coordinates.
Point p = ts.getPoint();

//map the ADC value read to into pixel co-ordinates

p.x = map(p.x, TS_MINX, TS_MAXX, 240, 0);
p.y = map(p.y, TS_MINY, TS_MAXY, 320, 0);

// we have some minimum pressure we consider 'valid'
// pressure of 0 means no pressing!

if (p.z > ts.pressureThreshhold) {


// Detect paint brush color change
if(p.y < 15)
{
if(p.x >= 0 && p.x < 30)
{
color = BLACK;
}
if(p.x >= 30 && p.x < 60)
{
color = RED;
digitalWrite(0,HIGH);
}
if(p.x >= 60 && p.x < 90)
{
color = GREEN;
}
if(p.x >= 90 && p.x < 110)
{
color = BLUE;
digitalWrite(0,LOW);
}
if(p.x >= 120 && p.x < 150)
{
color = CYAN;
}
if(p.x >= 150 && p.x < 180)
{
color = YELLOW;
}
if(p.x >= 180 && p.x < 210)
{
color = WHITE;
}
if(p.x >= 210 && p.x < 240)
{
color = GRAY1;
}
}
else
{
Tft.fillCircle(p.x,p.y,2,color);
}
}
}

Código de Demostración Mostrado

  • Inserta el TFT Touch Shield en el Seeeduino como se muestra a continuación.

TFT Touch Shield conectado al Seeeduino

Seguimiento de Versiones

RevisiónDescripcionesLanzamiento
v1.1cambio de imágenes y combinación de código de demostración22 de noviembre de 2011
v1.0Uso de TFT basado en SPFD5408A en lugar de TFT basado en chip controlador ST7781R12 de septiembre de 2011
v0.9bLanzamiento público inicial24 de junio de 2011

Soporte

Haz preguntas en el foro de Seeed.

Visor Online del Esquemático TFT Touch Shield v1.0

Visor Online del Esquemático TFT Touch Shield v0.9b

Recursos

Cómo comprar

Haz clic aquí para comprar: 2.8 TFT Touch Shield

Ver También

Licencias

Esta documentación está licenciada bajo Creative Commons Attribution-ShareAlike License 3.0 El código fuente y las librerías están licenciados bajo varias licencias de Código Abierto. Ver archivos de código fuente para detalles.

Enlaces Externos

Proyectos Relacionados

Es una pena que no tengamos ninguna demostración sobre TFT Touch Shield V1.0 en la Receta aún.

¡Publica tu increíble proyecto sobre TFT Touch Shield V1.0 para ganar un Cupón de $100! Por favor siéntete libre de contactarnos: [email protected]

Aquí presentamos algunos proyectos sobre controlador de gestos sin contacto 3Dpad shield Arduino

Esta demostración es un controlador MIDI 3Dpad "Control aéreo" hecho con el shield Arduino controlador de gestos sin contacto Dpad.

Quiero hacerlo.

Comparte Tus Increíbles Proyectos con Nosotros

Nacido con el espíritu de hacer y compartir, eso es lo que creemos que hace a un maker.

Y solo por esto, la comunidad de código abierto puede ser tan próspera como es hoy.

No importa lo que seas y lo que hayas hecho, hacker, maker, artista o ingeniero.

Mientras comiences a compartir tus trabajos con otros, estás siendo parte de la comunidad de código abierto y estás haciendo tus contribuciones.

Ahora comparte tus increíbles proyectos con nosotros en Recipe, y gana la oportunidad de convertirte en Usuario Principal de Seeed.

  • Los Usuarios Principales, son aquellos que muestran alto interés en los productos de Seeed y hacen contribuciones significativas en Recipe.

  • Cooperamos con nuestros Usuarios Principales en el desarrollo de nuestro nuevo producto, esto, en otras palabras, los Usuarios Principales tendrán la oportunidad de experimentar cualquier nuevo producto de Seeed antes de su lanzamiento oficial, y a cambio esperamos retroalimentación valiosa de ellos para ayudarnos a mejorar el rendimiento del producto y la experiencia del usuario. Y en la mayoría de los casos cuando nuestros Usuarios Principales tienen algunas buenas ideas para hacer cosas, ofreceremos piezas de hardware, servicios PCBA así como soporte técnico. Además, la cooperación comercial adicional con los Usuarios Principales es altamente posible.

Obtén más información sobre Usuario Principal por favor envía un email a:[email protected]

Soporte Técnico y Discusión de Productos

¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.

Loading Comments...