Go Down

Topic: SD Card Read/Write Arduino Mega Fail (Read 646 times) previous topic - next topic

kevinkeshav

Dec 01, 2018, 07:07 am Last Edit: Dec 01, 2018, 07:13 am by kevinkeshav
I have an Arduino Mega 2560 where I have used a MicroSD Card Module to Read/Write Data on the Micro SD Card.
I have tried using the Example in the Arduino IDE but the data is not being written or read by Arduino to the SD Card Module. The connections with the module is exactly how it is described in the Sketch.
I have attached pictures of the Connection and the module I use for the same.

The Example sketch for the SD Card Read/Write is also attached.

If there is a problem that you can notice, please let me know what the problem is and if it can be solved.

Thank you in advance.


Code: [Select]


/*
  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 (for MKRZero SD: SDCARD_SS_PIN)

 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;

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.print("Initializing SD card...");

  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
}


Juraj

the wiring in the sketch is for Uno  on Mega the SPI pins are 50 MISO, 51 MOSI and 52 CLK

jimLee

"myFile = SD.open("test.txt");"

try --> myFile = SD.open("/test.txt",FILE_WRITE);

-jim lee
PNW Ardiuno & Maker club
1012 9Th Street, Anacortes, WA 98221 (Around the back of building)

Zero_Magnitude

There will be two issues:

1. As Juraj said, you're using the non-MEGA pins.  You'll have to use the 50-53 pins on the black double-block on the end.  (See attached photo)

2. You won't be able to use USB power or serial port while using the SPI.  It looks like the pins are re-used for both, and will interfere.  I don't know how accurate that is because I've been using the SD cards for literally one day, but I couldn't get it to work without using a power supply and unplugging the SD module when programming.


Juraj

2. You won't be able to use USB power or serial port while using the SPI.  It looks like the pins are re-used for both, and will interfere.  I don't know how accurate that is because I've been using the SD cards for literally one day, but I couldn't get it to work without using a power supply and unplugging the SD module when programming.
this is not true in general. you have something wrong

Zero_Magnitude

Yes, I probably do have something wrong -- it's been one day.  I asked about it in my post and got no replies. 

If Kevin and I are both having similar issues on the same board, the same solution may work for them. 

When I unplug the SD module, I can program the board.  When it's plugged in, avrdude times out.  I saw a similar issue in the early 2000s with leaving ISCP plugs attached on multiplexed pins.  For a different Arduino program, I've had to leave D0 and D1 unused or the board can't program via USB. 

The Serial port doesn't work with the SD module plugged in.  The board works when powered via a supply.  I don't know what else to tell you.


Go Up