Lab_interaccio/2009/alarma_bisbe/alarma_bisbe.pde

121 lines
2.3 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 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<=20)) delay(38*N);
else if((i>=21)&&(i<=50)) delay(13*N);
else if((i>=51)&&(i<=180)) delay(3*N);
else if((i>=181)&&(i<=230)) delay(2*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/8) ); // 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();
}