Adafruit Data Logging Shield with Arduino Uno R3

Hi there,



This is the code I am using (CardInfo):

/*
  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);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.print("\nInitializing SD card...");
/********************* Added Two Lines **********************/
pinMode(10, OUTPUT); 
digitalWrite(10, HIGH); 
/***************************************************************/
  // we'll use the initialization code from the utility libraries
  // since we're just testing if the card is working!
  if (!card.init(SPI_QUARTER_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) {
}

I had a couple issues with the ADA1141 – Adafruit Assembled Data Logging Shield for Arduino. It seems to be powering up fine (via USB) and connected to the Arduino Uno R3 but when I run an example sketch from the IDE, CardInfo, it does not seem to be reading the SD card properly. It sometimes initializes the card but when it does it reads that the card type is SD1 when in fact it is a SDHC (CE04628 – MicroSD Memory Card – 16gb Class 10 is the memory card I am using).

I have also formatted the SD card using sdcard.org formatted to FAT32 and I am able to read/write the SD card when it is inserted to my laptop.

Any help will be appreciated :blush:.

1 Like

Hi Martin,

Thanks for posting on the forum :partying_face:

That demo code doesn’t seem to have any issues from a read through, can you please send a screenshot of the partitions on that SD (please crop out the rest of the image) when viewed using the Disk Partitioning Tool so we can see whether there may be any issues with the partitions on that drive and whether there may be any fragmentation that could be tripping it up?

2 Likes

Hi Bryce,

Thanks for the reply!

Here is before formatting the SD card using SD Memory Card Formatter 5.0.2 (sdcard.org):

and here it is after:

Is this what you were looking for?

Interesting, once the card is recognized (albeit with the wrong card type) is all of the Volume information correct?

I’m wondering whether it may just be that the enumeration in the public library (I’m not sure which version of it you’d have downloaded, but it’d probably be the latest) may be incorrect or the SD is not returning that value correctly. Also, have you tried using this with any other formatted cards?

Yes, all the volume information is correct.

I’m using the SD library included with the IDE and I have updated the library to the most current version as well.

I have tried using another SD Card from Lexar (FAT32, 32gB Class 10) and it formatted okay too but once I input the SD card into the Adafruit Data logging shield it seems to not read it as well. Same output in the serial monitor as shown above :frowning:

Hi, have you tried with any other SD card?

Hi there,

Yes I have used a different SD card and formatted it correctly.

Hi Martin,

Sounds like it may be a faulty board, unfortunately defects and component failures do pop-up sometimes. If you reply to your order confirmation email that’ll get in touch with the Core Electronics support team who can help organise get the project back on track for you.

Hi, did you get a replacement finally?