How to use SD Slot on 7" Touch LCD with a shield

Iam using 7" inch Touch LCD with the UTFT and UTOUCH library and both working fine with Arduino Mega and Shield

Now I'm trying to use the SD example but it doesn't work at all , The only guide line in the example code is to change pinMode(10, OUTPUT); => pinMode(53, OUTPUT);

Could anyone address where is the problem

ahmedmoheb:
Now I’m trying to use the SD example but it doesn’t work at all , The only guide line in the example code is to change pinMode(10, OUTPUT); => pinMode(53, OUTPUT);

Could anyone address where is the problem

You have provided far too much information, it is impossible to decipher all of it.Example of relevent useful information required might include but not limited to :-

The SD example? There are SEVERAL last time I checked.
It doesn’t work at all. What happens? Are there any error messages?
What have you tried other than changing the pinmode statement.
Have you tried reducing SPI speed?
Have You tried a different SD card?
Is the SD card <=2Gb?
Is it formatted to FAT32 using the SDFormatter utility?
Are you trying to display pictures using tinyFAT?

Anything else that might indicate what you are trying to do would help…

One thought springs to mind, you are obviously using an AC/DC adaptor along with USB power?

Regards,

Graham

Thanks for your notes

I tried Cardinfo Example

/*
  SD card test 
   
 This example shows how use the utility libraries on which the'
 SD library is based in order to get info about your SD card.
 Very useful for testing a card when you're not sure whether its working or not.
 	
 The circuit:
  * SD card attached to SPI bus as follows:
 ** MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila
 ** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila
 ** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila
 ** CS - depends on your SD card shield or module. 
 		Pin 4 used here for consistency with other Arduino examples

 
 created  28 Mar 2011
 by Limor Fried 
 modified 9 Apr 2012
 by Tom Igoe
 */
 // include the SD library:
#include <SD.h>

// set up variables using the SD utility library functions:
Sd2Card card;
SdVolume volume;
SdFile root;

// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
const int chipSelect = 4;    

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("\nInitializing SD card...");
  // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
  // Note that even if it's not used as the CS pin, the hardware SS pin 
  // (10 on most Arduino boards, 53 on the Mega) must be left as an output 
  // or the SD library functions will not work. 
  pinMode(10, OUTPUT);     // change this to 53 on a mega


  // we'll use the initialization code from the utility libraries
  // since we're just testing if the card is working!
  if (!card.init(SPI_HALF_SPEED, chipSelect)) {
    Serial.println("initialization failed. Things to check:");
    Serial.println("* is a card is inserted?");
    Serial.println("* Is your wiring correct?");
    Serial.println("* did you change the chipSelect pin to match your shield or module?");
    return;
  } else {
   Serial.println("Wiring is correct and a card is present."); 
  }

  // print the type of card
  Serial.print("\nCard type: ");
  switch(card.type()) {
    case SD_CARD_TYPE_SD1:
      Serial.println("SD1");
      break;
    case SD_CARD_TYPE_SD2:
      Serial.println("SD2");
      break;
    case SD_CARD_TYPE_SDHC:
      Serial.println("SDHC");
      break;
    default:
      Serial.println("Unknown");
  }

  // Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
  if (!volume.init(card)) {
    Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
    return;
  }


  // print the type and size of the first FAT-type volume
  uint32_t volumesize;
  Serial.print("\nVolume type is FAT");
  Serial.println(volume.fatType(), DEC);
  Serial.println();
  
  volumesize = volume.blocksPerCluster();    // clusters are collections of blocks
  volumesize *= volume.clusterCount();       // we'll have a lot of clusters
  volumesize *= 512;                            // SD card blocks are always 512 bytes
  Serial.print("Volume size (bytes): ");
  Serial.println(volumesize);
  Serial.print("Volume size (Kbytes): ");
  volumesize /= 1024;
  Serial.println(volumesize);
  Serial.print("Volume size (Mbytes): ");
  volumesize /= 1024;
  Serial.println(volumesize);

  
  Serial.println("\nFiles found on the card (name, date and size in bytes): ");
  root.openRoot(volume);
  
  // list all files in the card with date and size
  root.ls(LS_R | LS_DATE | LS_SIZE);
}


void loop(void) {
  
}

Also the ReadWrite Example

/*
  SD card read/write
 
 This example shows how to read and write data to and from an SD card file 	
 The circuit:
 * SD card attached to SPI bus as follows:
 ** MOSI - pin 11
 ** MISO - pin 12
 ** CLK - pin 13
 ** CS - pin 4
 
 created   Nov 2010
 by David A. Mellis
 modified 9 Apr 2012
 by Tom Igoe
 
 This example code is in the public domain.
 	 
 */
 
#include <SD.h>

File myFile;

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...");
  // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
  // Note that even if it's not used as the CS pin, the hardware SS pin 
  // (10 on most Arduino boards, 53 on the Mega) must be left as an output 
  // or the SD library functions will not work. 
   pinMode(53, OUTPUT);
   
  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");
  
  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  myFile = SD.open("test.txt", FILE_WRITE);
  
  // if the file opened okay, write to it:
  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
	// close the file:
    myFile.close();
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
  
  // re-open the file for reading:
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");
    
    // read from the file until there's nothing else in it:
    while (myFile.available()) {
    	Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  } else {
  	// if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
}

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

Both are displaying Error message “Initializing SD card…initialization failed”

I just loaded the example without further changes to the pin mode

I have read that SPI on Arduino Mega shoudl be “50, 51, and 52 (Arduino Mega)” , I don’t know how to change these pins as the previous example is setting these to "11, 12, and 13 (on most Arduino boards) "

I didn’t made any configurations related to the SPI speed

I have tried different cards , the last one Iam using is 256 MB formatted as FAT16 on Windows

At last , yes I’ using a DC adapter and the USB is connected

ok, so let's clarify what you need to do from the beginning.

The pinMode statement is only part of the picture. As you correctly identified, the chip select pin for the mega TFT shield is 53.

So in the cardinfo example, you need to change the following :-

const int chipSelect = 4;    

change to

const int chipSelect = 53;    

pinMode(10, OUTPUT); 

change to

pinMode(53, OUTPUT);

In the read/write example, you need to change the following :-

if (!SD.begin(4)) {

change to

if (!SD.begin(53) {

That should fix both the examples you tried already and you should be able to see why they did not work before, and now you should be able to figure out what changes you need to make to any other SD example programs.....

Regards,

Graham

Thanks for your help

But , I have already tried these changes but the output is still "Initializing SD card...initialization failed"

I will try to wire the SD card only without the shield to figure out where is the problem H/W or S/W

You are unspecific about whether the SD card is on a separate board or integrated with the LCD./ If tyhe latter, some LCD panels require you to make a bridge across a pair of solder pads in order to use the SD.