Jump to content

So recently I was asked to program a Redboard in an effort to make a thermal sensor and have it record data onto a microSD card. I have connected the shield onto the RedBoard and have verified the code using the Arduino software. 

Here is the whole code: 


// 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; 
const int chipSelect = 4;
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...");

  // 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?");
    return;  
  } else {
    Serial.println("witing is correct and a card is present.");
  }
  // print the type of card
  Serial.print("\nCard 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"); 
    return; 
  }
  // print the type and size of the first FAT-typ volume
  uint32_t volumesize; 
  Serial.print("\nVolume type is FAT");  
  Serial.println(volume.fatType(), DEC); 
  Serial.println() ;

  volumesize = volume.blocksPerCluster();  // clusters are collections of blocks
  volumesize *= volume.clusterCount(); // we'll have a lot of clusters
  volumesize *= 512;                   // SD card blocks are always 512 bytes
  Serial.print("Volume size (bytes): ");
  Serial.println(volumesize); 
  Serial.print("Volume size (Kbytes): ");
  volumesize /= 1024; 
  Serial.println(volumesize); 
  Serial.print("Volume size (Mbytes): ");
  volumesize /= 1024; 
  Serial.println(volumesize); 


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

}

 

However by the time I look at the serial monitor i get the message: 

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?

 

Please help, I am new to coding and programming in general so I am not sure what is happening and assuming that it might be a hardware issue. 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×