Tarjeta SD, localizada e iniciada pero no leido el contenido

Buenas tardes, hace unos adquiri una TFT, y por alguna razon no funciona el porta Sd que trae. Si la encuentra e inicia, pero no lee el contenido de la misma.
La TFt es esta:
http://www.ebay.es/itm/3-5-Inch-TFT-LCD-Touch-Screen-with-SD-Card-for-Arduino-MEGA-ILI9327-8-bits-3-6-/231688680257?hash=item35f1b8b341:g:RPsAAOSwoBtW4cGJ

He probado todos los ejemplos de la libreria SD y no ha habido manera de que arrancara, cambie if (!SD.begin(chipSelect)) por while (!card.init(SPI_HALF_SPEED, chipSelect)) { y parece que la detecta, pero no lee el interior.Agradeceria que alguien me echara una mano. saludos

 #include <SPI.h>
#include <SD.h>

File myFile;
Sd2Card card;
SdVolume volume;
SdFile root;

const int chipSelect = 53;

void setup()
{
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  
   while (!Serial) {
   ; // wait for serial port to connect. Needed for Leonardo only
   }


  Serial.print("Initializing SD card...");
  
pinMode(53, OUTPUT);
  pinMode(53, HIGH);
  
   //if (!SD.begin(chipSelect)) {
   while (!card.init(SPI_HALF_SPEED, chipSelect)) {
   
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization positive.");

  if (SD.exists("A.txt")) {
    Serial.println("A.txt existe.");
  }
  else {
    Serial.println("A.txt no aparece.");
  }

  // open a new file and immediately close it:
  Serial.println("Creating prueba.txt...");

  myFile = SD.open("prueba.txt", FILE_WRITE);
  myFile.close();

  // Check to see if the file exists: 
  if (SD.exists("prueba.txt")) {
    Serial.println("prueba.txt existe.");
  }
  else {
    Serial.println("prueba.txt no existe.");  
  }

  // delete the file:
  Serial.println("Removing c.txt...");
  SD.remove("c.txt");

  if (SD.exists("c.txt")){ 
    Serial.println("c.txt existe.");
  }
  else {
    Serial.println("c.txt no existe ya.");  
  }
}

void loop()
{
  // nothing happens after setup finishes.
}

Sadvance:
y parece que la detecta, pero no lee el interior.

Suena a problema de partición.

Probaste a formatear la tarjeta con SDFormatter?
Recuerda que formatear implica perder todo lo que tenga ahí, así que respalda lo importante antes de hacerlo.

Otra también sería que verifiques que no hayan conexiones defectuosas o flojas.

Lucario nien FAT16 ni FAT32 ni FAT, ni con el SDFormatt ni nada de nada. La he metido en otra pantalla y lee perfectamente, asique debe ser cosa de la TFT y de la libreria porque no me explico ya. Un saludo

Entonces solo resta la segunda posibilidad...

Lucario, la tft va conectada directa al arduino mega, no tengo ni idea ya de que puede ser, y me esta rayando la cosa, que al final terminan en el cubo la basura.

He probado este nuevo codigo y tampoco ni lee ni escribe, la reconoce pero na mas.
He probado en una nueva placa arduino y en otra tft igual y tampoco nace nada, salvo reconocerla, empiezo a pensar que tiene que ser algo de la libreria relacionado con la pantalla ILI9327-8.
Seguire experimentando hasta que lo saque o alguien me de solucion.........saludos

#include <SPI.h>
#include <SdFat.h>

const byte ChipSelect_SD = 53;            

Sd2Card card;
SdFile file;
SdFile root;

void setup(){
  Serial.begin(9600);
  pinMode (ChipSelect_SD, OUTPUT); // Pin 53;
  digitalWrite (ChipSelect_SD,HIGH);
  //digitalWrite (ChipSelect_SD,LOW);
  Serial.print("Initializing SD card...");

  if (!card.init(SPI_HALF_SPEED, ChipSelect_SD)) {

    Serial.println("initialization failed!");
    return;
  }
  else {
    Serial.println("initialization positiva.");
  }
  
  card.init(SPI_QUARTER_SPEED, ChipSelect_SD); // Inicia a comunicaçion con SD.
  if (!file.open(&root,"test.txt", O_APPEND | O_CREAT | O_WRITE)) {
    Serial.print("no se escribe test.txt...");
  }
  else{
    Serial.println("Writing to test.txt...");
    file.println("testing 1, 2, 3.");
    file.print("00.00");
    file.write((uint8_t*)"\0", 1);
    writeCRLF(file);

    // close the file:
   
    Serial.println("perfecto.");
  }
 file.close();
 
  if (!file.open(&root, "test.txt", O_READ)){
    Serial.println("test,txt no se abre");
 }
  else {
    Serial.println("test,txt abierto con:");

    int n;

    while ((n =file.read()) >= 0) Serial.write(n);
    }
file.close();

  if (!file.open(&root, "C.TXT", O_READ)){
    Serial.println("C.TXT no se abre");

  }
  else {
    Serial.println("C.TXT abierto con:");

    int n;

    while ((n =file.read()) >= 0) Serial.write(n);
  }
  file.close();
}
void writeCRLF(SdFile& f) 
{
  f.write((uint8_t*)"\r\n", 2);
}

void loop(){


}

Ya que me evitas por privado no tengo mas remedio que hacerlo público.
Edita el enlace de tu primer post y usa el tag de enlace correspondiente.

http://www.ebay.es/itm/3-5-Inch-TFT-LCD-Touch-Screen-with-SD-Card-for-Arduino-MEGA-ILI9327-8-bits-3-6-/231688680257?hash=item35f1b8b341:g:RPsAAOSwoBtW4cGJ

Respuesta:
Dices

Si la encuentra e inicia, pero no lee el contenido de la misma.

Esta claro que no lee, pero dices que la encuentra, o sea pasa la inicialización?
Pregunta tonta, probaste con los demos que existen en la librería SD? El que te da la info de la SD, card_info (creo) por ejemplo, ese funciona? No debería según tu explicación pero es para entender.
Yo he tenido muchos problemas con la lectura asi que te comprendo.
Hasta que compré una interfaz de una TFT de saint smart y esa funcionó no importa que le enviara, con todas las pruebas. Otras no. Luego lo que si me funcionó fue una sugerencia de noter donde el modificaba la velocidad como bien has hecho tu, pero a QUARTER no HALF_SPEED.
Prueba con :

 while (!card.init(SPI_QUARTER_SPEED, chipSelect))

Surbyte, primero: no te evito, simplemente lo modifique ayer pero se me olvido poner un corchete. Ya esta modificado, espero que así ya duermes tranquilo.......jejeje.

Respecto a lo de la info_SD o CardInfo, reconoce el tipo de Sd que es, pero me dice: "Could not find FAT16/FAT32 partition", que no encuentra particion ninguna del FAT, vamos.

He probado tambien con el fragmento de codigo que has pegado y el Cardinfo dice exactamente lo mismo que antes, ademas si te das cuenta en el post 5, esta puesto "SPI_HALF_SPEED" y "SPI_QUARTER_SPEED" y vuelve a pasar lo mismo, la reconoce pero no lee el interior.

Voy a investigar eso de la particion FAT, porque solo lo hace con estas TFT´s . Saludos
PD: es una micro Sd de 2Gb.

Y dices que con otra interfaz SD si funciona? No importa nada de todas las alternativas que estamos mencionando. O sea sin cambiar velocidad, sin hacer nada.

Por cierto, gracias por editar el enlace, que no se te olvide!
Y gracias por dejarme dormir, justamente anoche pensaba en esto y me desvelé, jejeje. Fuera de broma me pasó pero no por esto.

Sadvance:
Respecto a lo de la info_SD o CardInfo, reconoce el tipo de Sd que es, pero me dice: "Could not find FAT16/FAT32 partition", que no encuentra particion ninguna del FAT

Ja, no estaba equivocado entonces:

Lucario448:
Suena a problema de partición.

Tendría que ver esa tarjeta en un gestor de particiones para ver si hay algo mal ahí...

Lucario te estas pasando por alto esto

La he metido en otra pantalla y lee perfectamente, asique debe ser cosa de la TFT y de la libreria porque no me explico ya

Asi que no es cuestión de la partición creo yo.
El dice que asi tal como esta funciona en otro TFT.

Lo que no se si ha probado todo con el mismo programa en dos TFT diferentes. Uno falla y el otro no.
Lo que hace suponer problema de hardware.

He probado con 2 tarjetas diferentes, una de 2 Gb microSD y la otra de 4Gb microSD HC en dos pantallas como la del primer post y en las dos me pone lo mismo, inicia y reconoce el tipo de Sd que es, pero me dice la famosa frase: "Could not find FAT16/FAT32 partition", que no encuentra particion ninguna del FAT

Luego he probado las mismas SD en otra tft distinta y me las lee perfectamente, asique creo debe ser cosa de hardware de la tft o de la SD o algo de codigo que falte.....
En esta TFt´s es donde funcionan:
[ http://www.ebay.es/itm/SHIELD-PANTALLA-2-4-TFT-LCD-with-touch-panel-SD-240x320-Arduino-EL0438-/331305718610?hash=item4d235c1352:g:pbAAAOSwiYFXJIMA
http://www.ebay.es/itm/SHIELD-PANTALLA-3-2-TFT-LCD-with-touch-panel-SD-240x320-Arduino-EL0437-/331364697459?hash=item4d26e00573:g:XCQAAOSw2GlXJICz ](http://www.ebay.es/itm/SHIELD-PANTALLA-2-4-TFT-LCD-with-touch-panel-SD-240x320-Arduino-EL0438-/331305718610?hash=item4d235c1352:g:pbAAAOSwiYFXJIMA

http://www.ebay.es/itm/SHIELD-PANTALLA-3-2-TFT-LCD-with-touch-panel-SD-240x320-Arduino-EL0437-/331364697459?hash=item4d26e00573:g:XCQAAOSw2GlXJICz)

Un saludo y seguire experimentando

Que pines estas usando para habilitar la SD.
Claro que te funciona con la otra TFT pero no dices cual usas en uno cual en otro.
Los link que pusiste son para MEGA entonces el chip_select no es 10 sino 53, ese usas en todos los casos?

surbyte:
Asi que no es cuestión de la partición creo yo.
El dice que asi tal como esta funciona en otro TFT.

Ahora que lo mencionas...

Could not find FAT16/FAT32 partition

Me recuerda la primera vez utilicé mi único módulo para tarjetas SD. Nunca iniciaba la tarjeta y era porque tenía desconectado el cable que va para el MISO.
Probé con el ejemplo CardInfo, y justo me sucedía ese error. Entre pedir ayuda y algo de observación, noté que el problema estaba en que las conexiones de la protoboard estaban defectuosas.

Ahora bien, la pregunta es la siguiente: la placa con el TFT es una shield, o es un módulo de esos para conectar en protoboards? (con una sola fila de pines, en un solo borde)

El habla de dos grupos de TFT, uno con el que si funciona y otro grupo de 2 TFT (si no entendí mal) con el que NO le funciona y son los que quiere y debe tener que usar.

Sadvance:
En esta TFt´s es donde funcionan:
http://www.ebay.es/itm/SHIELD-PANTALLA-2-4-TFT-LCD-with-touch-panel-SD-240x320-Arduino-EL0438-/331305718610?hash=item4d235c1352:g:pbAAAOSwiYFXJIMA
http://www.ebay.es/itm/SHIELD-PANTALLA-3-2-TFT-LCD-with-touch-panel-SD-240x320-Arduino-EL0437-/331364697459?hash=item4d26e00573:g:XCQAAOSw2GlXJICz

No necesito entrar a links para saber que ambos son shields.

Pues bien, dice que en esas funciona, pero en la que no? Es otra shield o es un módulo para protoboard?

Lucario, todas las tft que tengo llevan el lector de Sd acoplado por debajo, las que voy a utilizar (verdes) como bien dice Surbyte son las que me estan dando problemas y van conectadas directas sin shield al mega en el pin 53.

Esta TFT es la que da problemas, y de esta son dos placas las que fallan: http://www.ebay.es/itm/3-5-Inch-TFT-LCD-Touch-Screen-with-SD-Card-for-Arduino-MEGA-ILI9327-8-bits-3-6-/231688680257?hash=item35f1b8b341:g:RPsAAOSwoBtW4cGJ

Las otras dos TFT (azules) son las que funcionan perfectamente y esas si llevan un shield para conectar al mega y tambien van al 53.

Podeis decirme la web o algun lector externo de Sd que no de problemas y hayais probado antes?????? porque empiezo a pensar que tienen algun fallo en el montaje bien en las pistas o en las soldaduras o vete a saber......
Saludos y gracias surbyte y lucario

Sadvance:
Esta TFT es la que da problemas, y de esta son dos placas las que fallan: http://www.ebay.es/itm/3-5-Inch-TFT-LCD-Touch-Screen-with-SD-Card-for-Arduino-MEGA-ILI9327-8-bits-3-6-/231688680257?hash=item35f1b8b341:g:RPsAAOSwoBtW4cGJ

Asumiré que son para Arduino Mega como dices, porque de otra forma pensaría que son para protoboard.
Si va directo a los pines del Mega, y funciona la pantalla TFT, entonces es que tenemos problemas de conexión entre pines y las terminales de la ranura de la SD.

Sadvance:
Podeis decirme la web o algun lector externo de Sd que no de problemas y hayais probado antes??????

En realidad, el mio lo adquirí con la aplicación Wish; pero lo que sí sé, es que es como uno de estos:


Este es para protoboards. Lo compré así porque en un principio solo contaba con Arduino Nano.

Muchas gracias Lucario, buscare uno lo ams similar posible, de todos modos el sd de ellas pantallas los dare por perdidos. Voy a colgar un nuevo post con un sketch que he hecho con la otra pantalla que funciona, pero no acaba de cumplir las ordenes....Saludos

Despues de hacer pruebas el fin de semana y estampar una tft contra el suelo, consegui hacer que leyera la SD, como bien dijo Lucario, era problemas de diseño de placa.

Nomalmente los pines en mega son:
SD_CS: 53 (SS)
SD_DIN: 50 (F_SO o MISO)
SD_CLK: 52 (SCLK)
SD_DO: 51 (F_SI o MOSI)

Pues esta TFT tiene cambiados los pines a :

SD_CS: 53 (SS)
SD_DIN: 52 (F_SO o MISO)
SD_CLK: 50 (SCLK)
SD_DO: 51 (F_SI o MOSI)