#include #include #include "util.h" #include "wave.h" #include "WProgram.h" void setup(); void ls(); void loop(); void playfile(char *name); 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) ); // 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(); } int main(void) { init(); setup(); for (;;) loop(); return 0; }