Go Down

Topic: Problemas con tarjeta SD (Read 2268 times) previous topic - next topic

Aitor46

Buenos dias,

Mi objetivo es construir un base de datos y para ello estoy utilizando un lector de tarjetas y el programa que utilizo es el siguiente:

/*
  SD card datalogger

This example shows how to log data from three analog sensors
to an SD card using the SD library.
   
The circuit:
* analog sensors on analog ins 0, 1, and 2
* SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4

created  24 Nov 2010
modified 9 Apr 2012
by Tom Igoe

This example code is in the public domain.
   
*/

#include <SD.h>

// On the Ethernet Shield, CS is pin 4. Note that even if it's not
// used as the CS pin, the hardware CS pin (10 on most Arduino boards,
// 53 on the Mega) must be left as an output or the SD library
// functions will not work.
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 Leonardo only
  }


  Serial.print("Initializing SD card...");
  // make sure that the default chip select pin is set to
  // output, even if you don't use it:
  pinMode(10, OUTPUT);
 
  // see if the card is present and can be initialized:
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
  }
  Serial.println("card initialized.");
}

void loop()
{
//  // make a string for assembling the data to log:
//  String dataString = "";
//
//  // read three sensors and append to the string:
//  for (int analogPin = 0; analogPin < 3; analogPin++) {
//    int sensor = analogRead(analogPin);
//    dataString += String(sensor);
//    if (analogPin < 2) {
//      dataString += ",";
//    }
//  }
//
//  // open the file. note that only one file can be open at a time,
//  // so you have to close this one before opening another.
//  File dataFile = SD.open("datalog.txt", FILE_WRITE);
//
//  // if the file is available, write to it:
//  if (dataFile) {
//    dataFile.println(dataString);
//    dataFile.close();
//    // print to the serial port too:
//    Serial.println(dataString);
//  } 
//  // if the file isn't open, pop up an error:
//  else {
//    Serial.println("error opening datalog.txt");
//  }
}

El problema es el que no me lee la tarjeta. Me dice "card failed or not present".

Alguien ha tenido el mismo problema?? Alguien tiene la solucion??

Muchas gracias,

noter

¿Qué arduino tienes y cómo has conectado tu módulo SD?

Aitor46

#2
Jan 21, 2014, 10:37 am Last Edit: Jan 21, 2014, 10:39 am by Aitor46 Reason: 1
Buenas, he probado con un arduino uno y con un arduino mega 2560. Con el arduino uno me funciona perfectamente, pero con el arduino mega 2560 no me funciona. Adjunto esquema de cableado. Para usar con el arduino mega 2560 cambio la entrada 10 por la 53.

noter

Debes cambiar también los otros pines a 50-52.
Echa un vistazo a la referencia SPI http://arduino.cc/en/Reference/SPI

noter

#4
Jan 21, 2014, 09:31 pm Last Edit: Jan 21, 2014, 09:33 pm by noter Reason: 1
Veo que, efectivamente el esquema que tienes de conexión del Mega es correcto. Perdón por no advertirlo, pero es que esta mañana navegaba con el móvil y no pude ver el pdf.
Si tienes conectado tal y como aparece en el esquema, el código debería funcionarte, cambiando sólo las líneas
const int chipSelect = 4;
pinMode(10, OUTPUT);
por
const int chipSelect = 53; // según el esquema, o bien el pin que vayas a utilizar como SS.
pinMode(53, OUTPUT); // esto sí es necesario, aunque utilices otro pin SS


Go Up