You must enable Javascript on your browser for the site to work optimally and display sections completely.

Counting Files on SD Card Directory With Arduino

**DRAFT**

Randomly choosing a file isn't hard if you know the file name that exist on your SD card.  But, I didn't want to reprogram my doorbell every time I wanted to update the sounds that played when the button was pressed.

We'll be going through the process on how I did it with a working example.

Counting Files Within an SD Card Directory

int getFileCount( String dir )
{
	File d = SD.open( dir );
	int count_files = 0;
	while( true )
	{
 		File entry =  d.openNextFile();
		if( !entry )
		{
			// no more files. Let's return the number of files.
			return count_files;
		}
		String file_name = entry.name();	//Get file name so that we can check 
							//if it's a duplicate
		if( file_name.indexOf('~') != 0 ) 	//Igrnore filenames with a ~. It's a mac thing.
		{					//Just don't have file names that have a ~ in them
			count_files++;
		}
	}
}

NOTE: When copying files to your SD card using a Mac, it will duplicate your files with _FILE~1.mp3 type of name.  I had to add the following code to the function to have it count properly.

Before:

		count_files++;

After:

		String file_name = entry.name();
		if( file_name.indexOf('_') != 0 )
		{
			count_files++;
		}

Think of the possibilities of a doorbell that plays sound clips according to the time of day, season or just because the Star Wars theme song is awesome!

**DRAFT**

comments powered by Disqus

Arduino sd card counting files random

Views: 5564