Lab_interaccio/2009/audifono/audifono.pde

119 lines
2.1 KiB
Plaintext
Raw Normal View History

2025-02-25 21:21:58 +01:00
#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();
}
}