Difference between revisions of "133709 SD Card Module Slot Socket Reader For Arduino ARM MCU"

From air
Jump to navigation Jump to search
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 
[[Image:Arduino+SDCard.jpg|200px|right|thumb|Arduino and SD Card Reader for sensor data logging]]
 
[[Image:Arduino+SDCard.jpg|200px|right|thumb|Arduino and SD Card Reader for sensor data logging]]
   
[http://www.dealextreme.com/p/133709 SD Card Module Slot Socket Reader For Arduino ARM MCU]
+
* [http://www.dealextreme.com/p/133709 SD Card Module Slot Socket Reader For Arduino ARM MCU] (test OK)
  +
* [http://www.banggood.com/SD-Card-Module-Slot-Socket-Reader-For-Arduino-ARM-MCU-Read-Write-p-74105.html un autre moins cher mais pas testé]
   
   
Line 8: Line 9:
 
* http://profmason.com/?p=1956
 
* http://profmason.com/?p=1956
 
* http://www.jeremyblum.com/2011/04/05/tutorial-11-for-arduino-sd-cards-and-datalogging/
 
* http://www.jeremyblum.com/2011/04/05/tutorial-11-for-arduino-sd-cards-and-datalogging/
  +
  +
==Arduino sketch==
  +
  +
<pre>
  +
/*
  +
* Log the value of the analog inputs in a data file
  +
*
  +
* Requires the SD library from the Adafruit website :https://github.com/adafruit/SD
  +
*
  +
*
  +
* SD card attached MOSI - pin 11, MISO - pin 12, CLK - pin 13, CS - pin 10
  +
* GND to GND pin - +5 to 5V
  +
*
  +
* @from http://profmason.com/?p=1956
  +
*/
  +
  +
#include <SD.h>
  +
  +
const int chipSelect = 10;
  +
  +
const int NBLINE_BEFORE_FLUSH = 50;
  +
  +
const int PERIOD = 10; // period in ms between 2 acquisitions
  +
  +
#define LOGFILE_NAME "LOGGER00.CSV"
  +
  +
File dataFile;
  +
  +
void setup()
  +
{
  +
// Open serial communications and wait for port to open:
  +
Serial.begin(57600);
  +
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(SS, 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:
  +
while (1) ;
  +
}
  +
Serial.println("card initialized.");
  +
  +
// Open up the file we're going to log to!
  +
// create a new file
  +
  +
char filename[] = LOGFILE_NAME;
  +
for (uint8_t i = 0; i < 100; i++) {
  +
filename[6] = i/10 + '0';
  +
filename[7] = i%10 + '0';
  +
if (! SD.exists(filename)) {
  +
// only open a new file if it doesn't exist
  +
dataFile = SD.open(filename, FILE_WRITE);
  +
break; // leave the loop!
  +
}
  +
}
  +
  +
if (! dataFile) {
  +
Serial.println("couldnt create file");
  +
}
  +
Serial.print("Logging to: ");
  +
Serial.println(filename);
  +
}
  +
  +
int i = 0; //Use this for the counter
  +
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 < 6; analogPin++) {
  +
int sensor = analogRead(analogPin);
  +
dataString += String(sensor);
  +
if (analogPin < 5) {
  +
dataString += ",";
  +
}
  +
}
  +
dataFile.println(dataString);
  +
// print to the serial port too:
  +
//Serial.println(' ');
  +
// The line dataFile.flush() will 'save' the file to the SD card after every
  +
// line of data - this will use more power and slow down how much data
  +
// you can read but it's safer!
  +
// If you want to speed up the system, call flush() less often and it
  +
// will save the file only when called and every 512 bytes - every time a sector on the
  +
// SD card is filled with data. However, don't depend on the automatic flush!
  +
i++;
  +
if (i>NBLINE_BEFORE_FLUSH){ //Call every NBLINE_BEFORE_FLUSH times
  +
dataFile.flush();
  +
i = 0;
  +
}
  +
// Take 1 measurement every PERIOD milliseconds
  +
delay(PERIOD);
  +
}
  +
  +
  +
</pre>

Latest revision as of 22:50, 15 September 2013

Arduino and SD Card Reader for sensor data logging


A voir

Arduino sketch

/*
 * Log the value of the analog inputs in a data file 
 *
 * Requires the SD library from the Adafruit website :https://github.com/adafruit/SD
 *
 *
 * SD card attached MOSI - pin 11, MISO - pin 12, CLK - pin 13, CS - pin 10
 * GND to GND pin - +5 to 5V
 * 
 * @from http://profmason.com/?p=1956
 */
 
#include <SD.h>
 
const int chipSelect = 10;
 
const int NBLINE_BEFORE_FLUSH = 50;

const int PERIOD = 10; // period in ms between 2 acquisitions 

#define LOGFILE_NAME "LOGGER00.CSV"

File dataFile;
 
void setup()
{
  // Open serial communications and wait for port to open:
  Serial.begin(57600);
  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(SS, 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:
    while (1) ;
  }
  Serial.println("card initialized.");
 
  // Open up the file we're going to log to!
  // create a new file
  
  char filename[] = LOGFILE_NAME;
  for (uint8_t i = 0; i < 100; i++) {
    filename[6] = i/10 + '0';
    filename[7] = i%10 + '0';
    if (! SD.exists(filename)) {
      // only open a new file if it doesn't exist
      dataFile = SD.open(filename, FILE_WRITE);
      break;  // leave the loop!
    }
  }
 
  if (! dataFile) {
    Serial.println("couldnt create file");
  }
  Serial.print("Logging to: ");
  Serial.println(filename);
}
 
int i = 0;  //Use this for the counter
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 < 6; analogPin++) {
    int sensor = analogRead(analogPin);
    dataString += String(sensor);
    if (analogPin < 5) {
      dataString += ",";
    }
  }
  dataFile.println(dataString);
  // print to the serial port too:
  //Serial.println(' ');
  // The line dataFile.flush() will 'save' the file to the SD card after every
  // line of data - this will use more power and slow down how much data
  // you can read but it's safer!
  // If you want to speed up the system, call flush() less often and it
  // will save the file only when called and every 512 bytes - every time a sector on the
  // SD card is filled with data. However, don't depend on the automatic flush!
  i++;
  if (i>NBLINE_BEFORE_FLUSH){  //Call every NBLINE_BEFORE_FLUSH times
    dataFile.flush();
    i = 0;
  }
  // Take 1 measurement every PERIOD milliseconds
  delay(PERIOD);
}