1

The reason I bought this MicroSD board because to follow their guide and I have used the recommend code in: File > Example > SD > CardInfo also did the slight change in the code for const int chipSelect = 10;

Here is the exact code I am using:

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


  created  28 Mar 2011
  by Limor Fried
  modified 9 Apr 2012
  by Tom Igoe
*/
// include the SD library:
#include <SPI.h>
#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
// MKRZero SD: SDCARD_SS_PIN
const int chipSelect = 10;

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);

    pinMode(10, OUTPUT); // change this to 53 on a mega(don't follow this!!)
    digitalWrite(10, HIGH); // Add this line


  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port 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?");
    while (1);
  } else {
    Serial.println("Wiring is correct and a card is present.");
  }

  // print the type of card
  Serial.println();
  Serial.print("Card 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");
    while (1);
  }

  Serial.print("Clusters:          ");
  Serial.println(volume.clusterCount());
  Serial.print("Blocks x Cluster:  ");
  Serial.println(volume.blocksPerCluster());

  Serial.print("Total Blocks:      ");
  Serial.println(volume.blocksPerCluster() * volume.clusterCount());
  Serial.println();

  // print the type and size of the first FAT-type volume
  uint32_t volumesize;
  Serial.print("Volume type is:    FAT");
  Serial.println(volume.fatType(), DEC);

  volumesize = volume.blocksPerCluster();    // clusters are collections of blocks
  volumesize *= volume.clusterCount();       // we'll have a lot of clusters
  volumesize /= 2;                           // SD card blocks are always 512 bytes (2 blocks are 1KB)
  Serial.print("Volume size (Kb):  ");
  Serial.println(volumesize);
  Serial.print("Volume size (Mb):  ");
  volumesize /= 1024;
  Serial.println(volumesize);
  Serial.print("Volume size (Gb):  ");
  Serial.println((float)volumesize / 1024.0);

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

and this is the schematic I have used as they recommended enter image description here but the serial monitor keeps outputting Initializing SD card...initialization failed I have tried wiring again and again but I am still getting the same result.

Here are the photo of the wiring and running the test. There is something I'm not sure if it is helpful but after I upload the file and before the serial monitor output:

Initializing SD card...initialization failed. Things to check:
* is a card inserted?
* is your wiring correct?
* did you change the chipSelect pin to match your shield or module?

a red led located next to R1 of the MicroSD card starts flashing and before that output, it flashes faster then it stops and I will be presenting with that output.

Things I have tried...

  • Different card
  • Without the card
  • Tried the 3v
  • Tried using pin 4 for chipSelect

Please don't mark as duplicate because I looked at the other and I'm trying to use this guide by this company and also this guide was presenting as a solution for others and here I am using it.

Edit 1:

After the writing this question, I had to upload the file again so I can take pictures when I did that this time the serial monitor outputs:

23:02:10.089 -> 
23:02:10.089 -> Initializing SD card...initialization failed. Things to check:
23:02:12.106 -> * is a card inserted?
23:02:12.106 -> * is your wiring correct?
23:02:12.106 -> * did you change the chipSelect pin to match your shield or module?

Looks like I am stuck with that and the only number keep changing

23:11:02.769 -> 
23:11:02.769 -> Initializing SD card...initialization failed. Things to check:
23:11:04.778 -> * is a card inserted?
23:11:04.778 -> * is your wiring correct?
23:11:04.778 -> * did you change the chipSelect pin to match your shield or module?

Edit 2:

Sorry but it looks these numbers coming because I did mark the show timestamps box by mistake.

  • it looks everything ok. check the soldering of the pins of Nano. – Juraj Jun 5 at 5:59
  • Juraj -Tomorrow I was going to try to test the connective of the pins at school, hopefully, it is the cause. – Noajm IsMy Name Jun 5 at 6:01
  • Also wiggle the wires in the breadboard. Sometimes they don't make an electrical connection, even thought they are fully pushed in. – Gerben Jun 5 at 11:05
  • A quick question after only skimming the post, is this an older standard SDCard or one of the High Capacity SDCard which uses a different way to address internal memory? – st2000 Jun 5 at 12:07
  • @Juraj have checked connectives of all pins and they were good so soldering was alright. I don't know what next I should do – Noajm IsMy Name Jun 5 at 17:45
1

The board on the photo is Arduino Micro, not Arduino Nano. Arduino Micro doesn't have SPI on pins 11, 12, 13. Use pins MOSI, MISO and SCK.

  • MO to DI
  • MI to DO
  • SCK to CLK
  • you can use any pin as CS, only set it as parameter to SD.begin()

enter image description here enter image description here

  • I'm sorry, would you explain again! So where are these DI, DO, and CLK located in my Arduino Micro! – Noajm IsMy Name Jun 5 at 18:12
  • DI, DO and CLK are on the SD module. MISO, MOSI and SCK are on the Arduino – Juraj Jun 5 at 18:13
  • Alright If this is what you meant ** MOSI - DI - pin 11 ** MISO - DO - pin 12 ** SCK - CLK - pin 13 ** CS - pin 4 : but still initialization failed! – Noajm IsMy Name Jun 5 at 18:23
  • not 11, 12, 13 !!! they don't have a number on Arduino Micro. only labels. see the picture I added to the Answer. on your board there is MO and MI – Juraj Jun 5 at 18:25
  • Please can you give me a further explanation I'm using this datasheet https://fullatech.com/wp-content/uploads/2017/11/Pro-Mini-pin-out.jpg – Noajm IsMy Name Jun 5 at 18:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.