SD-Karte vom 3,2"-TFT-Display ansprechen, wie?

Hallo,
versuche die SD-Karte anzusprechen, leider ohne Erfolg.
Ich betreibe das Mega2560-Bundle (der Schrott von Sainsmart) mit dem 3.2"-TFT mit dem TFT-Shield V1.0.
Die Widerstände habe ich gekreuzt, wie es im Forum beschrieben ist.
Die SD-Karte ist eine 2GB-Karte und kann über jeden PC gelesen werden.
Ich bin mir nicht ganz sicher, ob ein Defekt in der Hardware vorliegt (es ging noch nie) oder
ob ich ein falsches Library verwende.
Kann mir jemand eine funktionsfähiges Library mit meiner o.g. Kombination nennen, damit ich
mal den Fehler eingrenzen kann?
Eigentlich würde mir eine Infomeldung der Karte reichen, dann habe ich wenigstens Zugriff, alles
weitere wird sich dann finden.

Franz

Braucht eigentlich nichts besonders. Sollte mit der normalen SD Lib gehen, aber ich verwende SdFat:
https://code.google.com/p/sdfatlib/downloads/list

Da gibt es bei den Beispielen Tests mit denen man die Karten Infos angezeigt bekommt.

alpenpower:
Ich betreibe das Mega2560-Bundle (der Schrott von Sainsmart) mit dem 3.2"-TFT mit dem TFT-Shield V1.0.

Und ich dachte bisher, das große S auf der Boardbeschriftung des Sainsmarr MEGA steht nur für "Sainsmart".

Aber das steht für "Schrott von Sainsmart"? Müßte es dann kein Dreibuchstabenkürzel wie SvS sein?
Na ja, man lernt nie aus.

Ich verwende auch ein MEGA-Board mit dem großen S wie Schrott von Sainsmart.
Allerdings mit SD-Kartenschacht auf einem Ethernet-Shield und nicht auf einem TFT.

Dieser nur leicht modifizierte Demo-Sketch zur SD-Library funktioniert auf einem Schrott-von-Sainsmart MEGA-Board völlig einwandfrei:

// 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(SS, OUTPUT);     // change this to 53 on a mega
  delay(10);


  // 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) {
  
}

Die beiden von mir geänderten Zeilen sind:

 pinMode(SS, OUTPUT);     // change this to 53 on a mega
 delay(10);

Als Hardware-SS Pin setze ich einfach SS anstelle einer Pin-Nummer ein.
Und danach füge ich ein kleines delay von 10 Millisekunden ein.
Funktioniert einwandfrei.

alpenpower:
Die SD-Karte ist eine 2GB-Karte und kann über jeden PC gelesen werden.

Das ist kein Argument. PCs können auch Karten lesen, die mit speziellen Dateisystemen formatiert sind wie NTFS (Windows) oder EXT3 (Linux) oder sonstwas. Arduinos mit ihren einfachen Libraries können nur FAT-formatierte Karten lesen. Hast Du die Formatierung der Karte mal überprüft und sie ggf. mal frisch FAT-formatiert?

Das Chipselect muss dabei im Sketch passend eingestellt werden:

const int chipSelect = 4;

Und zwar so, dass mit dem PIN der SD-Kartenschacht auf Deinem Shield selektiert wird. Der Pin ist abhängig von der Hardware, beim Ethernet-Shield ist es D4, der den SD-Kartenschacht anwählt.

Wieso bist du sicher, das es am Schrott von Sainsmart liegt.
Ich betreibe ein 5" TFT und ein Shield von eben dieser Firma und zwar problemlos mit der ganz normalen
Sd-Library.
Und dabei ist es sogar egal, ob ich die Karte im Slot des Displays habe oder im Slot des Shields.
Soviel zu deinem Schrott!!!

Bei mir läuft dieser "Schrott" auch hervorragend-hab inzwischen ne halbe Kiste voll von und-find nix auszusetzen, im Gegenteil. Der Sainsmart-Uno gefällt mir allemal besser als das Original...

Und auch der SD-Slot am "schrottigen" TFT hintendran geht einwandfrei (hab ich mehrmals im Einsatz und alle gehn, auch der, wo ich das Display selber übern Jordan geschickt habe)- mit der Adafruit-Bibliothek.
Manchmal hilfts, weniger rumzumeckern und sich mehr schlau zu machen....grade Adafruit hat da ne supergute Tutorial-Ecke. Da steht dann auch, wie man die Karte richtig formatieren muss, und wie nicht..
Zwar ist die Belegung nen kleines bisschen anders, aber in ner gemütlichen halben Stunde hat mans raus.
Und dann laufen auch deren Libs einwandfrei.

hallo zusammen,

so, hat ein wenig gedauert.
@Maverick1509: Wenn ich richtig lese, so betreibst du einen Mega2560 mit einem 5"-TFT-Farbdisplay.
Was für ein TFT-Shield benutzt du denn? Ich möchte ebenfalls auf ein größeres Display umsteigen.
In den Angeboten auf www ist ein spezielles TFT-Shield dabei, aber ich denke, da sollte doch das
Standard ebenfalls klappen, oder? Und welche Library verwendest du hierzu?

@Rabenauge:
Du glaubst wirklich ich setz mich hin und bete den SD-Slot an und jammere hier, dass nichts funktioniert.
Ich habe mich schon durch sämtliche Beiträge gelesen und einige Stunden versucht, der SD-Karte eine
Info zu entlocken. Auch Adafruit, Github usw. sind mir bekannt.
Ich habe hier ein Problem, welches entweder software-, oder hardwaremäßig nicht funktioniert.
Meine Frage war nur, ob man hier ein spezielles Lib verwenden muss oder ob es mit dem Standardbeispielen auch schon geht,
damit ich einen Teil ausnehmen kann und sich meine Fehlersuche eingrenzt.
Sorry aber das musste sein, hier fragen Leute, die zu einem Problem eine Hilfe erwarten und nicht um sich einen dummen Spruch einzufangen. 8)

zum Schrott:
Nur ganz kurz, dann könnt ich weiter drauf rumreiten. Ich habe mir zum Einstieg ein solches Bundle von Sainsmart gekauft, weil der Preis u. die Ausstattung für mich zum Ausprobieren ok waren.
Für die Realisierung einer Heizungssteuerung entschloss ich mich nach kurzen Funktionsversuchen, hier noch zwei Pakete bei Sainsmart nachzukaufen, damit ich hardwaremäßig gleiche Ersatzteile vorrätig habe. Beide hatte ich zurückgeschickt, da das Display ein totaler Schrott war (ungleiche Ausleuchtung u. beschädigt).
Für eine Rücksendung bekam ich mein Geld zurück, auf das andere ware ich bis heute und Sainsmart äußert sich dazu nicht mehr, egal wie oft ich nachfrage. Auch bin ich kein Markenheini, der nur das Original braucht, aber bei Sainsmart werde ich definitiv nichts mehr kaufen. Ein LCD-Display (20x4) bekam ich erst zum Laufen, als ich unter dem Mikroskop eine unsaubere Lötstelle gefunden hatte). Aber dies is meine persönliche Geschichte und soweit egal.

Da ihr alle schreibt, dass die SD-Karte mit normalen Libs funktionieren muss, muss ich wohl die Hardware nochmals näher ansehen. Vielen Dank an alle Beteiligten. Die SD-Karte habe ich natürlich frisch formatiert, eh klar.
Wenn es klappt dann melde ich mich

Gruß Franz

Hallo,
Schrott oder nicht, kann ich nicht beurteilen. Bei original Hardware bist Du
nur auf der sicheren Seite- was Hardware und original bereit gestellte
Software angeht.

Das die SD-Card am PC gelesen werden kann, hat nichts zu bedeuten.
Nicht alle SD-Card-Leser lesen alle SD-Card´s.

Ausprobieren würde ich immer zuerst mit der Software, die zu der IDE geliefert
wird. Die SD-Soft läuft ohne Probleme.

Leider bemerkst Du nicht, welche Kombination Du Dir zugelegt hast. Die meisten
Fehler treten aber durch "Verdrahtungsfehler" auf.
Probiere einfach mal eine andere, kleinere SD-Card.
Gruß und Spaß
Andreas

P.S. wenn Du keine originale Hardware- mit originaler (IDE) Software benutzt,
dann mußt Du damit rechnen, das es NICHT läuft. Das kann laufen, muss aber nicht.