#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; void loop() { c = byteIn(); switch (c) { case 0: stop_play(); case 1: playcomplete("1.WAV"); break; case 2: playcomplete("2.WAV"); break; case 3: playcomplete("3.WAV"); break; case 4: playcomplete("4.WAV"); break; case 5: playcomplete("5.WAV"); break; case 6: playcomplete("6.WAV"); } } void playcomplete(char *name) { playfile(name); while (wave.isplaying){} card.close_file(f); } byte byteIn() { byte incomingByte; if (Serial.available() > 0) { incomingByte = Serial.read(); Serial.print(incomingByte, BYTE); return(incomingByte); } } void stop_play() { wave.stop(); card.close_file(f); } 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(); } }