Go Down

Topic: Imagenes desde SD [SOLUCIONADO] (Read 190 times) previous topic - next topic

manuelnadal

Mar 24, 2018, 04:27 pm Last Edit: Apr 21, 2018, 07:18 pm by manuelnadal
Hola.
es la primera vez que escribo en este foro, y es para pedir si por favor pueden ayudarme.
he intentado con un sifin de librerías y ejemplos y no he sido capaz de visualizar las imágenes de la sd en la pantalla TFT.
por eso ruego si alguien puede algo de ayuda para poder ver las imágenes guardadas en la SD en la pantalla TFT les estaría sumamente agradecidos.

La pantalla es una TFT de3.2" (ILI9341_16) montada sobre un escudo con soporte para la SD, y todo sobre una placa Arduino Mega.
las imágenes de la tarjeta SD están en formato Raw.

Bueno, al fin conseguí poner en la tarjeta SD un buen montón de fotos y visualizarlas en mi TFT.
puedo ver todas las imágenes sin problemas, pero lo consigo usando la instrucción "myFiles.load ( x,x,x,x"archivo"); y delay.
pero es un sistema demasiado laborioso.
se que se puede hacer con variables, pero no se como hacerlo,
por eso vuelvo a solicitar ayuda de los foreros.
por si alguien es tan amable de orientarme un poco.
yo estaría sumamente agradecido.
pueden parecer preguntas muy básicas, pero para mi dadas las circunstancias de aprendizaje,      ( autodidacta 100x1000), son muy complejas y complicadas.
perdón por el tocho y muchas gracias


Gracias de antemano

manuelnadal

¡¡¡ EUREKA!!!
Después de casi un mes de pruebas y sobreponiéndome a mi desanimo he conseguido realizar un programa Arduino para el visionado de imágenes en mi TFT desde la SD.
Estoy muy contento por que solo se emplea un "delay" y puedo ajustar el tiempo de visionado a mi capricho.
Esto demuestra que con tesón y con ilusión se consiguen las cosas aunque no se tengan demasiados conocimientos como es mi caso.
A mis 68 años tengo mas ilusión que muchas personas y espero seguir así todo el tiempo que pueda.

Muchas gracias por escuchar mi petición de ayuda, aunque lamentablemente no pudiron ayudarme .
solo escribo esta nota para que quede constancia de que al final se pueden conseguir las cosas.

Muchas Gracias de nuevo.


surbyte

Mas alla de que nadie te ayudó, podrías describir como lo has hecho y/o poner un código que si es demasiado grande requerirá ser adjuntado.
De ese modo concluyes tu consulta debidamente y ayudarás a alguien con el mismo problema


manuelnadal

#3
Apr 23, 2018, 01:24 pm Last Edit: Apr 23, 2018, 05:18 pm by surbyte
Tienes toda la razon.
mis disculpas por si he podido molestar a alguien ( no soy muy bueno redactando ).

la solucion que he realizado probablemente sea de primaria, debo decir que no es de mi autoria total el codigo sino que es una union de varios ejemplos modificados para que realicen el trabajo que yo queria.
los ejemplos utilizados son de dominio publico.

si alguien necesita que le aclare alguna cosa no tiene mas que decirlo a mi mail.

a continuación el código:

Code: [Select]
#include <SdFat.h>
#include <UTFT_SdRaw.h>
#define SD_CHIP_SELECT  53  
UTFT myGLCD(ILI9341_16, 38, 39, 40, 41);
UTFT_SdRaw myFiles(&myGLCD);
SdFat sd;

// Lista de las fotos para visionar en la pantalla.

char* fotos[]={"fotos/1.RAW", "fotos/2.RAW", "fotos/3.RAW", "fotos/4.RAW", "fotos/5.RAW", "fotos/6.RAW", "fotos/7.RAW", "fotos/8.RAW", "fotos/9.RAW", "fotos/10.RAW"};
char* files[10];
int picsize_x, picsize_y;
word res;
long sm, em;


void setup(){
 Serial.begin(115200);
 while (!Serial)  
 Serial.println(F("Inicializando la tarjeta SD..."));
 bool mysd = 0;
 while (!mysd)
   if (!sd.begin(SD_CHIP_SELECT, SPI_FULL_SPEED))
   {
     Serial.println(F("Tarjeta SD fallo o no presente"));
     Serial.println(F("Repitiendo...."));
   }
   else
   {
     mysd = 1;
     Serial.println(F("Tarjeta SD inicializada"));
     }      
 myGLCD.InitLCD();
 myGLCD.clrScr();
 picsize_x=myGLCD.getDisplayXSize();
 picsize_y=myGLCD.getDisplayYSize();
 switch (picsize_x)  
  case 320:
  for (int z=0; z<sizeof(fotos)/sizeof(*fotos);z++)
  files[z] = fotos[z];
  }

void loop (){
for (int i=0; i<(sizeof(files)/sizeof(*files)); i++)
   if (files[i]!="") {
     sm=millis();
     res=myFiles.load(0, 0, picsize_x, picsize_y, files[i]);
     em=millis();
     if (res!=0) {
       if (res==0x10){
         myGLCD.print("Fotos no encontradas...", 0, 0);
         myGLCD.print(files[i], 0, 14);}
       else
         myGLCD.print("ERROR: ", 0, 0);
         myGLCD.printNumI(res, 56, 0);  
         delay(3000);
         myGLCD.clrScr(); }
       else
         myGLCD.print(files[i], CENTER, myGLCD.getDisplayYSize()-12);
         delay(1000); }
         }



Moderador: Agregado de etiquetas de código

Go Up