121 lines
2.3 KiB
Plaintext
121 lines
2.3 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 lampara 6
|
|
#define N 8
|
|
|
|
char c, name[15];
|
|
|
|
void setup() {
|
|
Serial.begin(9600); // set up Serial library at 9600 bps
|
|
//Serial.println("Wave test!");
|
|
|
|
pinMode(2, OUTPUT);
|
|
pinMode(3, OUTPUT);
|
|
pinMode(4, OUTPUT);
|
|
pinMode(5, OUTPUT);
|
|
pinMode(lampara, OUTPUT);
|
|
|
|
/*name[0]='A';
|
|
name[1]='L';
|
|
name[2]='A';
|
|
name[3]='R';
|
|
name[4]='M';
|
|
name[5]='.';
|
|
name[6]='W';
|
|
name[7]='A';
|
|
name[8]='V';
|
|
name[9] = 0;*/
|
|
|
|
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();
|
|
analogWrite(lampara, 0);
|
|
|
|
}
|
|
|
|
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;
|
|
|
|
void loop() {
|
|
uint8_t i=0,flag=0;
|
|
|
|
playfile("ALARM.WAV");
|
|
//digitalWrite(lampara, LOW);
|
|
while (wave.isplaying) {
|
|
if(i==0)
|
|
delay(1000);
|
|
if((i>=0)&&(i<=10)) delay(42*N);
|
|
else if((i>=11)&&(i<=30)) delay(30*N);
|
|
else if((i>=31)&&(i<=60)) delay(10*N);
|
|
else if((i>=61)&&(i<=120)) delay(4*N);
|
|
else delay(N);
|
|
|
|
if ((i<(255)&&(!flag)))
|
|
{
|
|
i=i+1;
|
|
}
|
|
else if ((i>=255)&&(!flag)) flag=1;
|
|
else if ((i>0)&&(flag))
|
|
{
|
|
i=i-1;
|
|
}
|
|
else if ((i==0)&&(flag)) flag=0;
|
|
analogWrite( lampara, (int)(i/1) ); // al dividir disminuimos intensidad maxima
|
|
|
|
}
|
|
|
|
card.close_file(f);
|
|
analogWrite(lampara, 0);
|
|
|
|
}
|
|
|
|
|
|
void playfile(char *name) {
|
|
f = card.open_file(name);
|
|
if (!f) {
|
|
//putstring_nl(" Couldn't open file"); return;
|
|
}
|
|
if (!wave.create(f)) {
|
|
//putstring_nl(" Not a valid WAV"); return;
|
|
}
|
|
// ok time to play!
|
|
wave.play();
|
|
}
|