SD CARD 

Example

: Complete Example

This example shows how to use all the functions included in Waspmote SD API


File:
"WaspSD_3_completeExample.pde"


Code



/*
 *  ------Waspmote SD Complete Example--------
 *
 *  Explanation: This example shows how to use all the functions included
 *  in Waspmote SD API
 *
 *  Copyright (C) 2009 Libelium Comunicaciones Distribuidas S.L.
 *  http://www.libelium.com
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 2 of the License, or
 *  (at your option) any later version.
 * 
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 * 
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 *  Version:                0.1
 *  Design:                 David Gascón
 *  Implementation:         Alberto Bielsa
 */

const char* command="Folder1";
const char* command2="Folder2";
const char* command3="Test4";
const char* filename="file3.txt";

void setup() {
  USB.begin();
  USB.println("Start WASP FAT 16 SD-Card Test\n");
  
  // Set SD ON
  SD.ON();
}

void loop()
{
  // Init SD
  USB.println("... Init SD Card");
  USB.println(SD.init());
  USB.println("DISK INFO: ");
  USB.println(SD.print_disk_info());
  
  // Getting Disk Size
  USB.print("Disk Size: ");
  USB.println(SD.getDiskSize());
  USB.print("Disk Free: ");  
  USB.println(SD.getDiskFree());
  
  // Listing Root Directory. Initially empty
  USB.println("List root Directory: ");
  USB.println(SD.ls());
  
  // Creating Files
  if(SD.create("Test_File_1")) USB.println("Created a file called 'Test_File_1'");
  if(SD.create("Test_File_2")) USB.println("Created a file called 'Test_File_2'");  
  
  // Listing Atributes of files
  USB.println("List attributes of second file in root directory: ");
  USB.println(SD.ls(1,1,ATTRIBUTES));
  USB.println("List second file in root directory: ");
  USB.println(SD.ls(1));
  USB.print("Amount of files in root directory: ");
  USB.println(SD.numFiles(),DEC);
  
  // Creating Files and getting attributes
  if(SD.mkdir("Folder")) USB.println("Created directory 'Folder'");
  if(SD.mkdir("Folder2")) USB.println("Created directory 'Folder2'");
  USB.println("List root Directory: ");
  USB.println(SD.ls());
  if(!SD.isFile("Folder")) USB.println("'Folder' is not a file");
  if(SD.isDir("Folder")) USB.println("'Folder' is a dir");
  USB.print("Attributes of 'Folder': ");
  USB.println(SD.getAttributes("Folder"));
  
  // Getting into directory 'Folder'
  if(SD.cd("Folder")) USB.println("Entering into 'Folder' ");
  
  // Writing and reading in 'FileText.txt' file
  if(SD.create("FileText.txt")) USB.println("'FileText.txt' created");
  if(SD.appendln("FileText.txt","aaaaa\nbbbbb\nccccc")) USB.println("Write to 'FileText.txt' ");
  USB.println("Show 'FileText.txt':  ");
  USB.println(SD.cat("FileText.txt",0,17));
  USB.println("List 'Folder': ");
  USB.println(SD.ls());
  if(SD.writeSD("FileText.txt","byeee",6)) USB.println("Insert 'byeee' in FileText.txt");
  USB.println("Show 'FileText.txt':  ");
  USB.println(SD.cat("FileText.txt",0,17));
  USB.print("Number of lines of 'FileText.txt': ");
  USB.println(SD.numln("FileText.txt"),DEC);
  USB.print("Size of 'FileText.txt': ");
  USB.println(SD.getFileSize("FileText.txt"),DEC);
  USB.print("Attributes of 'FileText.txt': ");
  USB.println(SD.getAttributes("FileText.txt"));
  
  // Writing and reading in 'FileText2.txt' file  
  if(SD.create("FileText2.txt")) USB.println("'FileText2.txt' created");
  if(SD.appendln("FileText2.txt","aaaaa\nbbbbb")) USB.println("Write to 'FileText2.txt' ");
  USB.println("Show 'FileText2.txt':  ");
  USB.println(SD.cat("FileText2.txt",0,11));
  USB.println("List 'Folder': ");
  USB.println(SD.ls());
  if(SD.writeSD("FileText2.txt","byeee",6)) USB.println("Insert 'byeee' in FileText2.txt");
  USB.println("Show 'FileText2.txt':  ");
  USB.println(SD.cat("FileText2.txt",0,11));
  USB.print("Number of lines of 'FileText2.txt': ");
  USB.println(SD.numln("FileText2.txt"),DEC);
  USB.print("Size of 'FileText2.txt': ");
  USB.println(SD.getFileSize("FileText2.txt"),DEC);
  USB.print("Attributes of 'FileText2.txt': ");
  USB.println(SD.getAttributes("FileText2.txt"));
  
  // Writing and reading in 'FileText3.txt' file  
  if(SD.create("FileText3.txt")) USB.println("'FileText3.txt' created");
  if(SD.appendln("FileText3.txt","aaaaa")) USB.println("Write to 'FileText3.txt' ");
  USB.println("Show 'FileText3.txt':  ");
  USB.println(SD.cat("FileText3.txt",0,5));
  USB.println("List 'Folder': ");
  USB.println(SD.ls());
  if(SD.writeSD("FileText3.txt","byeee",0)) USB.println("Insert 'byeee' in FileText3.txt");
  USB.println("Show 'FileText3.txt':  ");
  USB.println(SD.cat("FileText3.txt",0,5));
  USB.print("Number of lines of 'FileText3.txt': ");
  USB.println(SD.numln("FileText3.txt"),DEC);
  USB.print("Size of 'FileText3.txt': ");
  USB.println(SD.getFileSize("FileText3.txt"),DEC);
  USB.print("Attributes of 'FileText3.txt': ");
  USB.println(SD.getAttributes("FileText3.txt"));
 
  // Writing and reading in 'FileText4.txt' file 
  if(SD.create("FileText4.txt")) USB.println("'FileText4.txt' created");
  if(SD.appendln("FileText4.txt","000000000011111111112222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000111111111122222222223333333333444444444455555555556666666666777777777778888888888999999999900000000001111111111222222222233333333334444444444")) USB.println("Write to 'FileText3.txt' ");
  USB.println("Show 'FileText4.txt':  ");
  USB.println(SD.cat("FileText4.txt",0,255));
  USB.println("List 'Folder': ");
  USB.println(SD.ls());
  if(SD.writeSD("FileText4.txt","byeee",0)) USB.println("Insert 'byeee' in FileText3.txt");
  USB.println("Show 'FileText4.txt':  ");
  USB.println(SD.cat("FileText4.txt",0,255));
  USB.print("Number of lines of 'FileText4.txt': ");
  USB.println(SD.numln("FileText4.txt"),DEC);
  USB.print("Size of 'FileText4.txt': ");
  USB.println(SD.getFileSize("FileText4.txt"),DEC);
  USB.print("Attributes of 'FileText4.txt': ");
  USB.println(SD.getAttributes("FileText4.txt"));
  
  // Opening and closing a file using other functions
  struct fat_file_struct* fp=SD.openFile("FileText3.txt");
  if(fp) USB.println("OK");
  SD.closeFile(fp);
  
  // Listinf 'Folder'
  USB.println("List Folder: ");
  USB.println(SD.ls());

  // Finding patterns in a file
  USB.println("Show 2nd and 3rd Lines of 'FileText.txt' ");
  USB.println(SD.catln("FileText.txt",1,2));
  USB.print("Pattern '11' is found in 'FileText4' at possition: ");
  USB.println(SD.indexOf("FileText4.txt","11",0),DEC);
  
  // Deleting 'FileText.txt'
  if(SD.del("FileText.txt")) USB.println("'FileText.txt' deleted");
  USB.println("List 'Folder'");
  USB.println(SD.ls());
  if(SD.cd("..")) USB.println("Getting out of 'Folder' ");
  
  // Working with 'Folder2' directory
  USB.println("List root Directory: ");
  USB.println(SD.ls());
  if(SD.cd("Folder2")) USB.println("Entering into 'Folder2' ");
  if(SD.create("FileText5.txt")) USB.println("'FileText5.txt' created");
  USB.println("List 'Folder2' Directory: ");
  USB.println(SD.ls());
  if(SD.del(".")) USB.println("Content of 'Folder2' deleted");
  USB.println("List 'Folder2' Directory: ");
  USB.println(SD.ls());
  if(SD.cd("..")) USB.println("Getting out of 'Folder2' ");
  
  // Delete directory 'Folder' and 'Folder2'
  if(SD.del("Folder")) USB.println("'Folder' deleted");
  USB.println("List root directory: ");
  USB.println(SD.ls());
  if(SD.del("Folder2")) USB.println("'Folder2' deleted");
  
  // Same disk free as when starting the example
  USB.println("List root directory: ");
  USB.println(SD.ls());
  USB.print("Disk Free: ");
  USB.println(SD.getDiskFree());  

  delay(5000);
}
 

Download code

You can download the code of this example.


© 2009 Libelium Comunicaciones Distribuidas S.L.

| Terms of use