Lab_interaccio/2009/audifono2_pde/audifono2_pde.pde

133 lines
2.5 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;
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();
}
}