SDCard Anfänger problem

Hy,

mein erster Post in diesem Forum. Ich hoffe mir kann geholfen werden.

Um in meinem Projekt daten speichern zu können will ich eine SD Card einsetzen. Leider schaffe ich es nicht die Beispielcodes der Libary durchzuführen...

Folgendes Steup: Arduino Uno R3 Adafruit SD Shield Transcend 2Gb SD Card (neu)

Benutzte Libary: https://github.com/greiman/SdFat

Benutztes Beispiel: SdInfo mit folgender änderung im Sketch: const uint8_t SdChipSelect = 10;

Schon beim überprüfen bekomme ich folgende Fehlermeldung: SdInfo:15: error: 'Sd2Card' does not name a type SdInfo:16: error: 'SdVolume' does not name a type SdInfo:19: error: 'ArduinoOutStream' does not name a type SdInfo.ino: In function 'void sdErrorMsg_P(const char*)': SdInfo:30: error: 'cout' was not declared in this scope SdInfo:30: error: 'pgm' was not declared in this scope SdInfo:30: error: 'endl' was not declared in this scope SdInfo:31: error: 'card' was not declared in this scope SdInfo:32: error: 'pstr' was not declared in this scope SdInfo:33: error: 'hex' was not declared in this scope SdInfo:35: error: 'dec' was not declared in this scope SdInfo.ino: In function 'uint8_t cidDmp()': SdInfo:40: error: 'cid_t' was not declared in this scope SdInfo:40: error: expected ;' before 'cid' SdInfo:41: error: 'card' was not declared in this scope SdInfo:41: error: 'cid' was not declared in this scope SdInfo:45: error: 'cout' was not declared in this scope SdInfo:45: error: 'pstr' was not declared in this scope SdInfo:46: error: 'hex' was not declared in this scope SdInfo:46: error: 'cid' was not declared in this scope SdInfo:46: error: 'dec' was not declared in this scope SdInfo:46: error: 'endl' was not declared in this scope SdInfo.ino: In function 'uint8_t csdDmp()': SdInfo:63: error: 'csd_t' was not declared in this scope SdInfo:63: error: expected;' before 'csd' SdInfo:65: error: 'card' was not declared in this scope SdInfo:65: error: 'csd' was not declared in this scope SdInfo:69: error: 'csd' was not declared in this scope SdInfo:76: error: 'cout' was not declared in this scope SdInfo:76: error: 'pstr' was not declared in this scope SdInfo:80: error: 'cout' was not declared in this scope SdInfo:80: error: 'pstr' was not declared in this scope SdInfo.ino: In function 'uint8_t partDmp()': SdInfo:95: error: 'cache_t' was not declared in this scope SdInfo:95: error: 'p' was not declared in this scope SdInfo:95: error: 'vol' was not declared in this scope SdInfo:100: error: 'card' was not declared in this scope SdInfo:104: error: 'cout' was not declared in this scope SdInfo:104: error: 'pstr' was not declared in this scope SdInfo:107: error: 'part_t' was not declared in this scope SdInfo:107: error: 'pt' was not declared in this scope SdInfo:108: error: 'hex' was not declared in this scope SdInfo:109: error: 'dec' was not declared in this scope SdInfo:109: error: 'endl' was not declared in this scope SdInfo.ino: In function 'void volDmp()': SdInfo:115: error: 'cout' was not declared in this scope SdInfo:115: error: 'pstr' was not declared in this scope SdInfo:115: error: 'vol' was not declared in this scope SdInfo:115: error: 'endl' was not declared in this scope SdInfo.ino: In function 'void setup()': SdInfo:138: error: 'cout' was not declared in this scope SdInfo:138: error: 'uppercase' was not declared in this scope SdInfo:138: error: 'showbase' was not declared in this scope SdInfo:138: error: 'endl' was not declared in this scope SdInfo:141: error: 'pstr' was not declared in this scope SdInfo:141: error: 'SD_FAT_VERSION' was not declared in this scope SdInfo.ino: In function 'void loop()': SdInfo:149: error: 'cout' was not declared in this scope SdInfo:149: error: 'pstr' was not declared in this scope SdInfo:156: error: 'card' was not declared in this scope SdInfo:156: error: 'SPI_HALF_SPEED' was not declared in this scope SdInfo:162: error: 'card' was not declared in this scope SdInfo:167: error: 'endl' was not declared in this scope SdInfo:170: error: 'SD_CARD_TYPE_SD1' was not declared in this scope SdInfo:174: error: 'SD_CARD_TYPE_SD2' was not declared in this scope SdInfo:178: error: 'SD_CARD_TYPE_SDHC' was not declared in this scope SdInfo:192: error: 'vol' was not declared in this scope

Was mache ich falsch? SdCard und SdVolume sind doch funktionen die eigentlich in der SdFat.h enthalten sein müssten???

Auf den ersten Blick würde ich sagen, dass du die Bibliothek nicht bzw. nicht richtig eingebunden hast.

Sehe ich genau wie sth77. Welches Betriebssystem und wo hast Du die Lib abgelegt?

StefanPe: Um in meinem Projekt daten speichern zu können will ich eine SD Card einsetzen. Leider schaffe ich es nicht die Beispielcodes der Libary durchzuführen...

Die Arduino-Software wird mit einer SD-Library ausgeliefert, die auch funktioniert. Zu dieser mitgelieferten SD-Library gibt es diverse Beispiele unter "Datei - Beispiele - SD"

Du versuchst offenbar, nicht diese mitgelieferte SD-Library zu verwenden, sondern eine zusätzlich zu installierende "SdFat"-Library. Diese funktioniert auch - wenn sie richtig installiert wurde!

Hast Du diese SdFat-Library überhaupt bei Dir installiert? Wenn so viele Fehlermeldungen beim Compilieren erscheinen, dann vermutlich nicht?!

Und warum verwendest Du nicht die zu Arduino mitgelieferte SD-Library mit ihren Beispielen zum Testen, z.B. Datei - Beispiele - SD - CardInfo ???

Die in der IDE mitgelieferte SD Libary habe ich probiert. Das Beispiel Card Info Compiliert aber das auslesen der Karte scheitert. Deshalb habe ich mir die andere Libary installiert. Also aus der Zip datei die Datei SdFat - master in dern Ordner C:...arduino\libaries Danach noch den Anhang -master entfernt und fertig.

Betriebssystem Windoof 8.1

StefanPe:
Die in der IDE mitgelieferte SD Libary habe ich probiert. Das Beispiel Card Info Compiliert aber das auslesen der Karte scheitert.
Deshalb habe ich mir die andere Libary installiert. Also aus der Zip datei die Datei SdFat - master in dern Ordner C:…arduino\libaries
Danach noch den Anhang -master entfernt und fertig.

Scheint ja wohl nicht ganz funktioniert zu haben.
Dass Du nach einer Library-installation die Arduino-IDE neu starten musst, ist Dir schon klar?

Wenn die mitgelieferte SD Library nicht auf Anhieb funktionieren möchte, gib dem CableSelect-Pin mal ein paar Millisekunden zur Stabilisierung, nachdem Du den Pin auf Output gesetzt hast, bevor Du die Initialisierung der SD-Karte aufrufst, z.B.:

  pinMode(SS, OUTPUT);     // change this to 53 on a mega (ist mit SS nicht notwendig)
  pinMode(chipSelect,OUTPUT);
  delay(10);

Funktioniert es dann, die SD-Karte zu initialisieren?

jurs: Scheint ja wohl nicht ganz funktioniert zu haben. Dass Du nach einer Library-installation die Arduino-IDE neu starten musst, ist Dir schon klar?

Ja... war nicht die erste libary die ich importiert habe :)

jurs: Wenn die mitgelieferte SD Library nicht auf Anhieb funktionieren möchte, gib dem CableSelect-Pin mal ein paar Millisekunden zur Stabilisierung, nachdem Du den Pin auf Output gesetzt hast, bevor Du die Initialisierung der SD-Karte aufrufst, z.B.:

Idee gefällt mir aber Problem besteht noch. Serial Monitor: Initializing SD card...initialization failed. Things to check: * is a card is inserted? * Is your wiring correct? * did you change the chipSelect pin to match your shield or module?

Nächster Schritt?

StefanPe: Nächster Schritt?

Hast Du die SD-Karte fabrikfrisch aus der Verpackung eingesetzt? Hast Du die Karte selbst formatiert? Oder partitioniert? Wie formatiert?

Hallo, "Nächster Schritt?"

Du hast einen Ordner, in dem sich Deine Sketche befinden. Indiesem Ordner gibt es einen Ordner "libraries" Aus diesem Ordner entfernst Du ALLES, was etwas mit "SD" zu tun hat. Dann startest Du die IDE, und benutzt die SD-Beispiele. Wenn diese nicht funktionieren, dann liegt es an Dir. Verdrahtungsfehler, falsch formatiert, falsche SD-Card u.s.w. Nimm mal ne´andere SD (FAT Format), damit man sehen kann, ob es nicht Deine neue ist. Die Beispiele funktionieren ohne "wenn und aber". Gruß und Spaß Andreas

jurs: Hast Du die SD-Karte fabrikfrisch aus der Verpackung eingesetzt? Hast Du die Karte selbst formatiert? Oder partitioniert? Wie formatiert?

Naja ist nicht die erste SD die ich probiere... hab die extra gekauft und im ersten Schritt "out of the box" probiert. Jetzt Formatiert mit SD Formater V4.0 --> bringt aber auch keine Veränderung

:~

StefanPe: Naja ist nicht die erste SD die ich probiere... hab die extra gekauft und im ersten Schritt "out of the box" probiert. Jetzt Formatiert mit SD Formater V4.0 --> bringt aber auch keine Veränderung

Wie meinen? Du hast schon viele Karten probiert, die haben alle funktioniert, nur diese eine nicht? Oder Du hast schon viele Karten probiert und keine funktioniert?

Außerdem bitte mal genau mitteilen, welches das verwendete "Adafruit SD Shield" sein soll. Ich finde unter exakt diesem Begriff kein Adafruit-Produkt.

Hm-lass das rumgespiele mit irgendwelchen "fremden" Libs- die mitgelieferte kann alles was man brauchen könnte. Mit "besseren" (die es wohl nich sind, wenns damit auch nicht klappt) kannst du spielen, wenn du weisst, dass die Hardware auch läuft. Stell erst mal sicher, dass die Sache überhaupt funktioniert. Mitunter erkennen die billigen Kartenslots schonmal die Karte nicht-neu einlegen hilft da. Verkabelung ist richtig und ordentlich gemacht (gehe ich von aus)-wackelige Streckbrett-Kabelchen sind, grade beim Schreibzugriff, unter Umständen die Ursache für den Totalausfall einer Karte!

Neu gekaufte Karten benutzt man niemals-die werden immer erst formatiert und zwar richtig! Bei Adafruit gibts ein gutes Tutorial zu den SD-Karten (und der Bibliothek), wenn es damit nicht klappt, hast du ein Hardwareproblem. Ich hab schon diverse SD-Kartenhalter und Karten damit ganz problemlos ans Laufen bekommen. Immer.

Rabenauge: Hm-lass das rumgespiele mit irgendwelchen "fremden" Libs- die mitgelieferte kann alles was man brauchen könnte. Mit "besseren" (die es wohl nich sind, wenns damit auch nicht klappt) kannst du spielen, wenn du weisst, dass die Hardware auch läuft. Stell erst mal sicher, dass die Sache überhaupt funktioniert.

JA... sehe ich auch so. War aber schon der x-Schritt weil alles bis jetzt nicht geholfen hat. Erst habe ich mit einem 1,5€ china modul gespielt...ohne Erfolg. Unterschiedliche Karten, unterschiedliche Module = kein Erfolg Aktuell benutze ich diesen: https://learn.adafruit.com/adafruit-data-logger-shield/overview Alles so gemacht wie im tutorial. Kabel gibts da keine beim Shield

Bin kurz davor die SD geschichte in die Tonne zu werfen und alles per WiFi zu machen

Es stimmt zwar, dass dass das auch mit der Standard SD Lib gehen soll, aber SdFat ist Hundert mal besser!

Die Arduino SD Lib ist eine Wrapper Klasse für eine alte Version von SdFat. Allerdings eben alt und daher wurden inzwischen Bugs ausgebessert und die Performance verbessert. Außerdem ist die Funktionalität doch stark eingeschränkt. Einige Sachen (z.B. eine ganze Zeile auslesen) gehen mit SdFat viel, viel einfacher. Dann gibt es einige Komfort-Sachen wie I/O-Streams.

StefanPe: Aktuell benutze ich diesen: https://learn.adafruit.com/adafruit-data-logger-shield/overview Alles so gemacht wie im tutorial. Kabel gibts da keine beim Shield

Dieses Shield wird ohne angelötete Header geliefert, diese müssen selbst angelötet werden.

Bist Du sicher, dass das Anlöten der Header fehlerfrei durchgeführt wurde? Keine Kurzschlüsse zwischen den Pin-Headern?

Hast Du ein besonderes Augenmerk auf den 6-poligen SPI-Header gelegt? Und auch diesen angelötet? Also alle Header auf das UNO-Board aufstecken, dabei auch den 6pol SPI-Header nicht vergessen, dann das Shield auflegen und verlöten? Wobei ich gerade sehe: Bei "Installing the Headers" wird der 6-polige SPI-Header gar nicht verlötet. Und selbst wenn, dann landet der Anschluss auf einem Lochrasterfeld, das nicht am Controller angeschlossen ist. Das funktioniert dann garantiert nicht mit allen Arduino-Boards. Teile bitte auch mal genau mit, welches Arduino-Board Du verwendest!

Edit: Der 6-polige SPI-Header scheint bei diesem Shield irrelevant zu sein, das Logger-Shield ist offenbar nur für UNO-Boards geeignet und entsprechend designed, um nur mit einem UNO zusammen zu funktionieren. (Wobei für MEGA und LEONARDO Boards offenbar noch ein "Software-SPI" möglich ist, wenn man eine zusätzliche Library dafür installiert.)

jurs: Dieses Shield wird ohne angelötete Header geliefert, diese müssen selbst angelötet werden.

Bist Du sicher, dass das Anlöten der Header fehlerfrei durchgeführt wurde? Keine Kurzschlüsse zwischen den Pin-Headern?

Hast Du ein besonderes Augenmerk auf den 6-poligen SPI-Header gelegt? Und auch diesen angelötet? So wie es empfohlen wurde?

Also alle Header auf das UNO-Board aufstecken, dabei auch den 6pol SPI-Header nicht vergessen, dann das Shield auflegen und verlöten?

Wobei ich gerade sehe: Bei "Installing the Headers" wird der 6-polige SPI-Header gar nicht verlötet. Und selbst wenn, dann landet der Anschluss auf einem Lochrasterfeld, das nicht am Controller angeschlossen ist. Das funktioniert dann garantiert nicht mit allen Arduino-Boards. Teile bitte auch mal genau mit, welches Arduino-Board Du verwendest!

Alles mit Shield stacking headers verlötet. Fehler beim Löten kann man nie ausschließen sieht aber ziemlich gut aus 8)

Das Board ist ein China Klon :cold_sweat: http://www.ebay.de/itm/UNO-R3-ATmega328P-ATmega16U2-Version-Board-Mit-USB-Kabel-fuer-Arduino-NEU-T5-/331250680096?

So Problem gefunden :grin:

ist irgendwie ein wackler drin! Wenn ich es in die hand nehme und öfter board zu shield bewege dabei immer wieder den serial monitor starte läufts irgendwan...

Vielleicht auch einfach schlechter Kontakt zwischen shield und board... das finde ich noch raus. Auf jeden fall liegt das Problem hier.

Danke für die schnellen Antworten Endlich kann ich mein Projekt weiter verfolgen freudentanz

StefanPe: So Problem gefunden :grin:

ist irgendwie ein wackler drin! Wenn ich es in die hand nehme und öfter board zu shield bewege dabei immer wieder den serial monitor starte läufts irgendwan...

Aha. Hört sich an als wenn das Anlöten der Header vielleicht doch nicht ganz so reibungsfrei verlaufen ist wie Du dachtest.

Hast Du denn zum Löten ein gutes BleiHALTIGES Elektronik-Lötzinn mit Flussmittelkern verwendet?

Hallo,
“Adafruit SD Shield” Reply #0
“Aktuell benutze ich diesen:” Reply #12
“Das Board ist ein China Klon” Reply #15
“ist irgendwie ein wackler drin!” Reply #16

Das ist es, was mich regelmäßig in den Wahnsinn treibt- vom MarkenProdukt zum
ReisSchüsselMüll.
Dann sind es nicht die Sketche- nein, EIN Wackelkontakt??!
Gruß und Spaß
Andreas

SkobyMobil: Hallo, "Adafruit SD Shield" Reply #0 "Aktuell benutze ich diesen:" Reply #12 "Das Board ist ein China Klon" Reply #15 "ist irgendwie ein wackler drin!" Reply #16

Das ist es, was mich regelmäßig in den Wahnsinn treibt- vom MarkenProdukt zum ReisSchüsselMüll. Dann sind es nicht die Sketche- nein, EIN Wackelkontakt??! Gruß und Spaß Andreas

Ähh...wie auch immer das gemeint ist.

Fakt: Mein ERSTER Arduino. Ich bin weder Hardware Entwickler noch Informatiker...sry! Aber ich hab spaß am entwickeln und da ist/war der Arduino (besonders der 5€ Clon) perfekt. Würde jetzt auch keinen Clone mehr kaufen. Nicht weil sie evtl. schlecht sind und mein Problem vielleicht daher kommt (oder von meinen Löt künsten) sondern weil ich den Gedanken hinter den Arduino Projekt supporten möchte. Es hat mir jetzt auf jeden Fall viel Nerven und sehr viel Zeit gekostet. Das schlimmste ist, dass ich den so nicht in einem Projekt einsetzen kann, in dem Verfügbarkeit bzw. Zuverlässigkeit super wichtig sind.

jurs: Aha. Hört sich an als wenn das Anlöten der Header vielleicht doch nicht ganz so reibungsfrei verlaufen ist wie Du dachtest.

Hast Du denn zum Löten ein gutes BleiHALTIGES Elektronik-Lötzinn mit Flussmittelkern verwendet?

Zinn: Stannol S-Sn60Pb39Cu1 --> JA Flussmittel: Stannol X32-10i (in Stift Form = voll praktisch für Bastler die keine großen Mengen brauchen)

Danke nochmal für die Hilfe Gruß Stefan