SD Card Modul funktioniert nicht

Sehr geehrter Damen und Herren,

dies ist mein erster Beitrag in einem Forum, deswegen hoffe ich, dass Sie meine fehlerhafte Problemschilderung entschuldigen. Auch mit dem Arduino selbst hab ich noch nicht so viel Erfahrung, weswegen ich auch meine schlechte Programmierschreibweise entschuldige.

Mein Problem ist folgendes: Ich möchte mit einem Arduino UNO R3 eine SD Card Modul ansteuern und eine txt Datei erstellen, in welcher Zahlen und Buchstarben gespeichert werden.
Dazu habe ich einen Quellcode geschrieben, welcher einmal überprüft ob die SD Card sich im Modul befindet und dann eine txt Datei erstellt und mit einfachen Daten füllt. Leider erkennt das Programm die SD Card, schreibt aber nicht die txt Datei hinein. Meine Hardware sollte korrekt sein, da ja die SD Card gefunden wird. Auch alle Kabel habe ich überprüft.

Falls es aber an der SD Card selbst liegt, wäre das für mich eine wichtige Information, da ich nicht weiß ob jede SD Card mit einem Arduino kompatibel ist. Es handelt sich hierbei um eine Lexar Micro SD Karte 64GB (UHS-I, U3, A1, V30, C10, 4K UHD microSDXC Memory Card). Ich habe die SD Card vorher am Laptop Formatiert.

Falls es am Quellcode liegt, bin ich offen für Verbesserungen. Ich bedanke mich für Ihre Hilfe und hoffe, dass ich bald weiterkomme.

CS = Pin 10
QUELLCODE::::>

/*
  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

 */
// include the SD library:
#include <SPI.h>
#include <SD.h>
File Textdatei;  

// Diese Befehle sind die Einzigen, wo ich nicht weiß, wofür sie da sind
Sd2Card card;
SdVolume volume;
SdFile root;


const int chipSelect = 10;

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

  Serial.print("\nInitializing SD card...");

  // 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 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.");
  }

//=====================================================================================
Serial.println("Initialisierung abgeschlossen");        

 if(!SD.begin(10))
  {
    Serial.println("Verbindung zur SD Karte fehlgeschlagen");
    return;
  }

  
 Textdatei = SD.open("t.txt", FILE_WRITE);            // An dieser Stelle wird die Textdatei erstellt. 

  if (Textdatei) 
{                                        // Wenn die Textdatei ("test.txt") gefunden wurde....
    
    Serial.println("Schreibe in Textdatei...");           // ... soll eine Meldung im seriellen Monitor erscheinen...
    Textdatei.println("Funduino GmbH");                   // ... und die Textdatei anschließend befüllt 
    Textdatei.println("1, 2, 3, 4, 5");
    Textdatei.println("a, b, c, d, e");
    Textdatei.println();
   
                                
    Textdatei.close();                                    // Anschließend wird die Textdatei wieder geschlossen...
    Serial.println("Abgeschlossen.");                     
    Serial.println();
    
} 
  else 
{                                                        // Wenn !keine! Textdatei gefunden werden kann ...
    
    Serial.println("Textdatei konnte nicht ausgelesen werden");   
}
//=====================================================================================

}

void loop(){

  
}


Die SD-Karte könnte unpassend sein.
Aus der Referenz:

Gruß Tommy

Was für eine Link bitte, es gibt welsche die sind nicht für Uno geeignet, unter umständen machst du dir die SD Karte kaputt.
Deine lebt noch sonst wurde die nicht erkannt :wink:

Dann hast du vermutlich etwas zusammen kopiert, was nicht zusammen gehört.
Nimm besser den Sketch, so wie er bei Funduino steht und kopiere da nichts rein.

Wenn Du ein Windows benutzt, ist das Dateisystem dann zwingend NTFS.
Das geht nicht.

Lade Dir von SD-Assoziation den SD-Formatter auf Deinen Rechner. SD Memory Card Formatter for Windows/Mac | SD Association

Dort sind auch die Basics erklärt.
Die SD-Karte muss im FAT-Format vorliegen.
Wenn Du die einmal formatiert hast, wird das auch gehen.

1 Like

Eher Fat32, bei der Größe, wobei die Lib nur bis SDHC unterstützt (#2) und die gehen nur bis 32 GB. Probieren, es kann aber trotzdem Probleme geben.

Gruß Tommy

Der Formatter macht automatisch F32, sobald F16 nicht mehr geht (2GB).

Die Karten lassen sich mit 64GB formatieren.

grafik

Und ich meine, das der formatter das auch macht.

Ja, Fat32 kann bis 16 TerraByte, aber ob die SD-Lib da mit spielt, weiß ich nicht. Die aktuelle SD.h basiert übrigens auf der SdFat.

Gruß Tommy

Seit wann ?
Man kann auswählen wie soll formatiert werden, Wo du aber recht hast man sollte keine schnellformatierung machen, kann sein das die nicht funktioniert.

image

1 Like

Leg mal ne Karte ein, die größer ist.
Deine ist nur 1GB....

Größere habe im Telefon rausnehmen ist echte Fummelei
image

1 Like

Ok. Dann hat Mikkisoft ein Einsehen gehabt und hat das tatsächlich geändert.
Das Letzte Mal hatte ich mit Win7 zu tun.
Danke fürs probieren.
Fürs rausfummeln spendier ich nen Stück Schoki. :chocolate_bar:

Bei Win7 war das auch so :wink:

1 Like

Was mir fehlt, ist eine Äußerung vom TO.
Das nimmt immer mehr überhand: Frage abkippen und sich nicht mehr rühren.

Gruß Tommy

Letzte Zeit irgendwie Standard verhalten, ob das Wetter ist schuld?

Darum kippe ich manchmal auch nur ungefragten Code ab und kommentiere sparsam.
Tut mir zwar innerlich weh.
Aber ich sehe auch diverse Diskussionen um Dinge, die vollkommen irrelevant sind.
Da kann ich TO's auch verstehen, wenn die sich denken las die mal machen...

Andereseits, angepupt zu werden weil schon lesen zu schwer ist, macht auch nicht gerade Spass. Und das nicht von Fragestellern... :face_with_peeking_eye:

Nach meinem Verständnis: Wenn ich in einem Forum eine Frage stelle, dann schaue ich mehrmals zeitnah rein und äußere mich zu den Fragen/Antworten.

Wenn das nicht passiert, rückt der TO mit jeder Stunde ohne Reaktion für mich näher an den Status Troll heran.

Gruß Tommy

Vermutung
Bei Anmelden einmal Email Adresse eingetragen, damit laufen die Benachrichtigungen ins Lehre

Bitte duz uns.

Meiner Ansicht ist die Karte zu groß. Versuch es mal mit einer kleineren so 1 -2 GByte.

Der TO ist Neuling.
Wie kann er erraten, daß Ihr in 5 Stunden schon 17 Antworten heraußhaut? Nicht der TO ist langsam sonder Ihr seit zu schnell....
:wink:
Grüße Uwe

Richtig.

Dies ist ein Forum und kein Chat Room.
Bevor eine Frage gesendet wird, sollte alles was dem Frager dazu in den Sinn kam, überprüft und dokumentiert sein.
Wenn es nach dem Absenden für den Frager gut (verständlich) aussieht, kann der eventuellen Antwortern ruhig etwas Zeit lassen und erstmal schlafen gehen.

Dass die Frage eventuell doch unverständlich war, oder wichtige Informationen fehlen, tja... Pech für den Frager.

Erst nach vierzehn Tagen sich wieder zu melden, oder garnicht, weil einem eine Lösung selbst eingefallen ist, ist natürlich unhöflich. Das stimmt, @Tommy56 .

1 Like