Deek-Robot Data logging shield V1.0

Servus!
Es gelingt mir nicht, das Deek-Robot Data logging shield V1.0 aufgesteckt auf einem Arduino Mega 2560 R3 zum laufen zu bringen.
Die Uhr funktioniert zwar, das aber Datnlogging nicht. (Zwei Tage habe ich herumgeschustert, es ist mir nicht geglückt)
Hat jemand einen wirklich funktionierenden sketch für den Datenlogger in Verbindung mit einem Mega.
Ich wäre unendlich dankbar.

Und was genau funktioniert nicht. Ohne eine Fehlerbeschreibung können wir nicht helfen.
Und zeige deinen Sketch hier in Code-Tags </> -Schaltfläche verwenden.

"Because the Mega and Leonardo do not have the same hardware SPI pinout, you need to specify which pins you will be using for SPI communication with the card."

Nutzt Du diese Zeilen:

if (!SD.begin(10, 11, 12, 13)) {
...
while (!card.init(SPI_HALF_SPEED, 10, 11, 12, 13)) {
...

Wenn nicht, schau mal For the Mega and Leonardo.

Zunächst Dank für Eure Antwort!

Der folgende sketch ist einer von den Arduino SD-Beispielen.
Ergebnis: “initialization failed!”

Die von mir versuchsweise geänderten Zeilen habe ich mit " >>>>… " hervorgehoben
Die Speicherkarte funktioniert mit dem CC3000 WIFI Shield.

Es wäre schön eine Lösung zu haben.
Bis Bald
Dannke

/*
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:
    ** UNO: MOSI - pin 11, MISO - pin 12, CLK - pin 13, CS - pin 4 (CS pin can be changed)
    and pin #10 (SS) must be an output
    ** Mega: MOSI - pin 51, MISO - pin 50, CLK - pin 52, CS - pin 4 (CS pin can be changed)
    and pin #52 (SS) must be an output
    ** Leonardo: Connect to hardware SPI via the ICSP header

created Nov 2010 by David A. Mellis
modified 9 Apr 2012 by Tom Igoe

This example code is in the public domain.

*/

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

File myFile;

// 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 = 10; >>>>>>>>>>>> weder 4 noch 8 funktioniert

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); >>>>>>>>>>>>>>>53 nicht SS

if (!SD.begin(10, 11, 12, 13)) { >>>>>>>>>>>> liefert den Fehler:

ReadWrite:48: error: no matching function for call to ‘SDLib::SDClass::begin(int, int, int, int)’

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
}

Wie hast du das (uno) shield angeschlossen?
Einfach auf den Mega draufstecken funktioniert ja nicht - siehe:
"Mega: MOSI - pin 51, MISO - pin 50, CLK - pin 52, CS - pin 4 (CS pin can be changed) pin #52 (SS) must be an output"

Also verbinde die shield pins 10 bis 13 NICHT direkt mit den mega pins 10 bis 13 sondern wie folgt:

Signal - Mega Pin - Shield Pin
MISO - 50 - 12
MOSI - 51 - 11
SCK - 52 - 13
CS - 53 - 10

Im Code muss dann noch die Zeile
#define CHIPSELECT 10
auf
#define CHIPSELECT 53
geändert werden

ha64:
Einfach auf den Mega draufstecken funktioniert ja nicht - siehe:

Laut Anleitung sollte es doch funktionieren. :slight_smile:

jupi:
ReadWrite:48: error: no matching function for call to 'SDLib::SDClass::begin(int, int, int, int)'

Die Doku ist veraltet, da auch ein umbenannter Ordner noch gafunden wird. Nach mir nicht bekannten Regeln wird dann eine der Bibliotheken ausgewählt, bei Dir die falsche. Bei mir (IDE 1.6.5) hat ein Umbenennen in backup_SD geholfen. Sonst mußt Du das Verzeichnis an eine ganz andere Stelle verschieben oder halt löschen.

Nach jeder Aktion IDE neu starten, war zumindest mal notwendig!

Vielen Dank für Eure Hilfe,
der Fehler war eine SD.H im Verzeichnis c: ..Programme(x86). Die habe ich gelöscht, jetzt funktioniert's.

Bis ich soweit bin jemandem zu helfen wird noch ein Wenig dauern.
Bis Bald.