Difference between revisions of "133709 SD Card Module Slot Socket Reader For Arduino ARM MCU"
Jump to navigation
Jump to search
Line 8: | Line 8: | ||
* 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> |
Revision as of 21:43, 15 September 2013
SD Card Module Slot Socket Reader For Arduino ARM MCU
A voir
- Library for Arduino https://github.com/adafruit/SD
- http://profmason.com/?p=1956
- http://www.jeremyblum.com/2011/04/05/tutorial-11-for-arduino-sd-cards-and-datalogging/
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); }