119 lines
2.1 KiB
Plaintext
119 lines
2.1 KiB
Plaintext
#include <AF_Wave.h>
|
|
#include <avr/pgmspace.h>
|
|
#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();
|
|
}
|
|
}
|