#include #include #include "util.h" #include "wave.h" AF_Wave card; File f; Wavefile wave; // only one! #define redled 9 void setup() { Serial.begin(9600); // set up Serial library at 9600 bps Serial.println("Audifono test!"); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(redled, OUTPUT); if (!card.init_card()) { putstring_nl("Card init. failed!"); return; } if (!card.open_partition()) { putstring_nl("No partition!"); return; } if (!card.open_filesys()) { putstring_nl("Couldn't open filesys"); return; } if (!card.open_rootdir()) { putstring_nl("Couldn't open dir"); return; } putstring_nl("Files found:"); ls(); } void ls() { char name[13]; int ret; card.reset_dir(); putstring_nl("Files found:"); while (1) { ret = card.get_next_name_in_dir(name); if (!ret) { card.reset_dir(); return; } Serial.println(name); } } uint8_t tracknum = 0; char c = 0; char c_old = 0; byte incomingByte; char filename[13]; void loop() { if (Serial.available() > 0) { incomingByte = Serial.read(); c = incomingByte; Serial.print(incomingByte, BYTE); } if ( ( c > 0 ) && (c!=c_old) ) { int i = 0; c_old = c; if(c<=9) { filename[i] = c + '0'; filename[i+1] = '.'; filename[i+2] = 'W'; filename[i+3] = 'A'; filename[i+4] = 'V'; filename[i+5] = 0; } else if(c>9) { filename[i] = (int)(c/10) + '0'; filename[i+1] = c%10 + '0'; filename[i+2] = '.'; filename[i+3] = 'W'; filename[i+4] = 'A'; filename[i+5] = 'V'; filename[i+6] = 0; } playfile(filename); } else if ( (c==0) && (c!=c_old) ) { c_old = c; stop_play(); } if( (!wave.isplaying) && (c!=0) ) { stop_play(); playfile(filename); } } void playcomplete(char *name) { playfile(name); while (wave.isplaying){} card.close_file(f); } void stop_play() { wave.stop(); card.close_file(f); card.reset_dir(); } void playfile(char *name) { // stop any file already playing if (wave.isplaying) { wave.stop(); card.close_file(f); } card.reset_dir(); f = card.open_file(name); if (f && wave.create(f)) { wave.play(); } }