miércoles, 29 de julio de 2015

Pantalla táctil 2,4"

Hola nuevamente, hoy les traigo unas pantallas del fabricante "mcufriend", el controlador es el SPFD5408. Me costó bastante encontrar las librerías y demás.
Cuenta con un lector de tarjetas micro SD y tiene una resolución de 240 x 320, son un poco lentas pero sirven para la mayoría de las aplicaciones.

Se puede conseguir en DX, al final después de las descargas les dejo el link.

En la librería se pueden encontrar algunos ejemplos muy claros de como funciona, con lo cual no es necesario poner algún ejemplo de mi parte, en la página "proyecto: integrador arduino" van a ver un ejemplo bastante interesante sobre como funciona.

En la carpeta de las librerías de la pantalla ("SWTFT-Shield") hay una carpeta que dice placas, dentro de ella se pueden encontrar 2 archivos, uno es para el arduino UNO y el otro para el mega. Esto es por la disposición de ciertos pines o definiciones de variables (lo corregí hace un tiempo largo ya, por lo que no recuerdo exactamente cual de las 2 cosas era). Para cambiar de placa solo hay que poner el archivo de la placa correcta, borrar lo que tiene en el paréntesis y cambiarlo por el SWTFT que está en la carpeta "SWTFT-Shield". Actualmente está puesto para hacerlo funcionar en un MEGA como se puede apreciar en las fotos de abajo.



Y ahora tienen un pequeño programa de ejemplo que viene con las librerías que es un "paint" en el cual se puede dibujar. Ese programa de ejemplo, en el arduino mega anda mal, está invertido el exe "x" y el eje "y", se podría modificarlo con la función map, pero como son los ejemplos "originales" decidí dejarlo como estaba





Descargas:

Pantalla:

https://mega.co.nz/#!H5gCzSiL!9PSVtEKC326hzOGqBiLbj_rzA-WvoyYP7OYyO4FoJvc


Donde comprar:

http://www.dx.com/p/diy-2-4-tft-lcd-touch-screen-shield-expansion-board-for-arduino-uno-350121

9 comentarios:

  1. Respuestas
    1. La función map permite adaptar un rango de valores a otro, por ejemplo si quiero leer un valor analógico (recordá que el rango para la lectura analógica es de 0 a 1023) para luego escribirlo (y el rango para escribirlo es de 0 a 255) voy a tener que adaptarlo, entonces el código me quedaría:

      analogWrite(map(analogRead(A0), 0, 1023, 0, 255));

      Avisame si me expliqué bien!

      Borrar
  2. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  3. Muchas gracias por la respuesta, con eso pude deducir como quitar la pantalla invertida.

    p.x = tft.width()-(map(p.x, TS_MINX, TS_MAXX, tft.width(), 0));
    p.y = tft.height()-(map(p.y, TS_MINY, TS_MAXY, tft.height(), 0));

    En estas lineas del mapeo solo se quita "tft.height()-" en el punto "p.x y py" y ya se quita lo invertido. :D

    Quedaría:
    p.x = (map(p.x, TS_MINX, TS_MAXX, tft.width(), 0));
    p.y = (map(p.y, TS_MINY, TS_MAXY, tft.height(), 0));

    ResponderBorrar
    Respuestas
    1. No tengo el código presente en este momento, pero si lo que copiaste (las primeras 2 líneas) son las que están en el código, entonces sí, quedaría como vos decís.
      Yo no quise modificar el código porque era el de la librería y quise dejar el "original"

      Borrar
  4. Alguien sabe como reiniciar las coordenadas?, ejemplo, ya lei una entrada de presion de x,y,z pero ocupo reiniciar esas variables, como seria?

    ResponderBorrar
    Respuestas
    1. Si no me equivoco, con la siguente línea de código debería refrescar automáticamente las nuevas coordenadas:

      TSPoint p = ts.getPoint();

      Borrar
    2. Estoy usando el monitor serial para ver la lectura:
      Serial.print("X = "); Serial.print(X);
      Serial.print("\tY = "); Serial.print(Y);
      Serial.print("\tPressure = "); Serial.println(Z);
      TSPoint p = ts.getPoint();
      Serial.print("X = "); Serial.print(X);
      Serial.print("\tY = "); Serial.print(Y);
      Serial.print("\tPressure = "); Serial.println(Z);

      Pero antes de TSPoint p=ts.getPoint(); vale (124,183)
      y despues de ese comando sigue valiendo lo mismo (124,183)

      Borrar
    3. Bueno, pero tenés que usar el p.x y el p.y para obtener los valores, que son las variables (por así decirlo) que traen las librerías

      Borrar