#include #include #include #include #include SdReader card; // This object holds the information for the card FatVolume vol; // This holds the information for the partition on the card FatReader root; // This holds the information for the filesystem on the card FatReader f; // This holds the information for the file we're play WaveHC wave; // This is the only wave (audio) object, since we will only play one at a time // this handy function will return the number of bytes currently free in RAM, great for debugging! int freeRam(void) { extern int __bss_end; extern int *__brkval; int free_memory; if((int)__brkval == 0) { free_memory = ((int)&free_memory) - ((int)&__bss_end); } else { free_memory = ((int)&free_memory) - ((int)__brkval); } return free_memory; } void sdErrorCheck(void) { if (!card.errorCode()) return; // putstring("\n\rSD I/O error: "); // Serial.print(card.errorCode(), HEX); putstring(", "); // Serial.println(card.errorData(), HEX); while(1); } void setup() { byte i; // set up serial port Serial.begin(57600); // putstring_nl("WaveHC"); // // putstring("Free RAM: "); // This can help with debugging, running out of RAM is bad // Serial.println(freeRam()); // if this is under 150 bytes it may spell trouble! // Set the output pins for the DAC control. This pins are defined in the library pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); // pin13 LED pinMode(13, OUTPUT); if (!card.init(true)) { //play with 4 MHz spi if 8MHz isn't working for you //if (!card.init()) { //play with 8 MHz spi (default faster!) // putstring_nl("Card init. failed!"); // Something went wrong, lets print out why sdErrorCheck(); while(1); // then 'halt' - do nothing! } // enable optimize read - some cards may timeout. Disable if you're having problems card.partialBlockRead(true); // Now we will look for a FAT partition! uint8_t part; for (part = 0; part < 5; part++) { // we have up to 5 slots to look in if (vol.init(card, part)) break; // we found one, lets bail } if (part == 5) { // if we ended up not finding one :( // putstring_nl("No valid FAT partition!"); sdErrorCheck(); // Something went wrong, lets print out why while(1); // then 'halt' - do nothing! } // Lets tell the user about what we found // putstring("Using partition "); // Serial.print(part, DEC); // putstring(", type is FAT"); // Serial.println(vol.fatType(),DEC); // FAT16 or FAT32? // // Try to open the root directory if (!root.openRoot(vol)) { // putstring_nl("Can't open root dir!"); // Something went wrong, while(1); // then 'halt' - do nothing! } // Whew! We got past the tough parts. // putstring_nl("Ready!"); } float value = 0; void loop() { // value = average(0)*2.54/2; // Serial.println(value); // if(value <30) // { if (Serial.available()) { switch (Serial.read()){ case '0': Serial.print('#'); playcomplete("0.WAV"); Serial.print('0'); break; case '1': Serial.print('#'); playcomplete("1.WAV"); Serial.print('1'); break; case '2': Serial.print('#'); playcomplete("2.WAV"); Serial.print('2'); break; case '3': Serial.print('#'); playcomplete("3.WAV"); Serial.print('3'); break; case '4': Serial.print('#'); playcomplete("4.WAV"); Serial.print('4'); break; case '5': Serial.print('#'); playcomplete("5.WAV"); Serial.print('5'); break; case '6': Serial.print('#'); playcomplete("6.WAV"); Serial.print('6'); break; case '7': Serial.print('#'); playcomplete("7.WAV"); Serial.print('7'); break; case '8': Serial.print('#'); playcomplete("8.WAV"); Serial.print('8'); break; case '9': Serial.print('#'); playcomplete("9.WAV"); Serial.print('9'); break; } } // delay(1000); // } } float average(int anaPin) { int lecturas = 4; long total = 0; float average = 0; for(int i=0; i