martes, 17 de mayo de 2016

codigo de programación del ejercicio piropos

//titulo: waveconPot
//descripcion:controla la reproduccion de archivos con potenciometro
//creado: 29 abril 2014
//por: copiado de http://forums.adafruit.com/viewtopic.php?f=31&t=23067





#include <FatReader.h>
        #include <SdReader.h>
        #include <avr/pgmspace.h>
        #include "WaveUtil.h"
        #include "WaveHC.h"


        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

        #define DEBOUNCE 100  // button debouncer

        const int analogInPin = A0;  // Analog input pin that the potentiometer is attached to

        int track=1;
        int sensorValue = 0;        // value read from the pot
        int outputValue = 0;        // value output to the PWM (analog out)
        int estaSonant[] ={
          0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        };

        // 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() {
          // set up serial port
          Serial.begin(9600);
          putstring_nl("WaveHC with 6 buttons");
        
           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);

          // enable pull-up resistors on switch pins (analog inputs)
          digitalWrite(14, HIGH);
          digitalWrite(15, HIGH);
          digitalWrite(16, HIGH);
          digitalWrite(17, HIGH);
          digitalWrite(18, HIGH);
          digitalWrite(19, HIGH);

          //  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!");
        }

        void loop() {
        
        sensorValue = analogRead(analogInPin);          
        outputValue = map(sensorValue, 0, 1023, 0, 50);        


                
                   switch(outputValue){
                      case 1:
                        playcomplete("1.WAV");
                        Serial.println("UN");
                        break;
                      case 2:
                        playcomplete("2.WAV");
                        Serial.println("DOS");
                        break;
                      case 3:
                        playcomplete("3.WAV");
                        Serial.println("TRES");
                        break;
                      case 4:
                        playcomplete("4.WAV");
                        Serial.println("QUATRE");
                        break;
                      case 5:
                        playcomplete("5.WAV");
                        Serial.println("UN");
                        break;
                      case 6:
                        playcomplete("6.WAV");
                        Serial.println("DOS");
                        break;
                      case 7:
                        playcomplete("7.WAV");
                        Serial.println("TRES");
                        break;
                      case 8:
                        playcomplete("8.WAV");
                        Serial.println("QUATRE");
                        break;
                      case 9:
                        playcomplete("9.WAV");
                        Serial.println("UN");
                        break;
                      case 10:
                        playcomplete("10.WAV");
                        Serial.println("DOS");
                        break;
                      case 11:
                        playcomplete("11.WAV");
                        Serial.println("TRES");
                        break;
                      case 12:
                        playcomplete("12.WAV");
                        Serial.println("QUATRE");
                        break;
                      case 13:
                        playcomplete("13.WAV");
                        Serial.println("UN");
                        break;
                      case 14:
                        playcomplete("14.WAV");
                        Serial.println("DOS");
                        break;
                      case 15:
                        playcomplete("15.WAV");
                        Serial.println("TRES");
                        break;
                      case 16:
                        playcomplete("16.WAV");
                        Serial.println("QUATRE");
                        break;
                      case 17:
                        playcomplete("17.WAV");
                        Serial.println("UN");
                        break;
                      case 18:
                        playcomplete("18.WAV");
                        Serial.println("DOS");
                        break;
                      case 19:
                        playcomplete("19.WAV");
                        Serial.println("TRES");
                        break;
                      case 20:
                        playcomplete("20.WAV");
                        Serial.println("QUATRE");
                        break;
                      case 21:
                        playcomplete("21.WAV");
                        Serial.println("UN");
                        break;
                      case 22:
                        playcomplete("22.WAV");
                        Serial.println("DOS");
                        break;
                      case 23:
                        playcomplete("23.WAV");
                        Serial.println("TRES");
                        break;
                      case 24:
                        playcomplete("24.WAV");
                        Serial.println("QUATRE");
                        break;
                      case 25:
                        playcomplete("25.WAV");
                        Serial.println("UN");
                        break;
                      case 26:
                        playcomplete("26.WAV");
                        Serial.println("DOS");
                        break;
                      case 27:
                        playcomplete("27.WAV");
                        Serial.println("TRES");
                        break;
                      case 28:
                        playcomplete("28.WAV");
                        Serial.println("QUATRE");
                        break;
                      case 29:
                        playcomplete("29.WAV");
                        Serial.println("UN");
                        break;
                      case 30:
                        playcomplete("30.WAV");
                        Serial.println("DOS");
                        break;
                      case 31:
                        playcomplete("31.WAV");
                        Serial.println("TRES");
                        break;
                      case 32:
                        playcomplete("32.WAV");
                        Serial.println("QUATRE");
                        break;
                      case 33:
                        playcomplete("33.WAV");
                        Serial.println("UN");
                        break;
                      case 34:
                        playcomplete("34.WAV");
                        Serial.println("DOS");
                        break;
                      case 35:
                        playcomplete("35.WAV");
                        Serial.println("TRES");
                        break;
                      case 36:
                        playcomplete("36.WAV");
                        Serial.println("QUATRE");
                        break;
                      case 37:
                        playcomplete("37.WAV");
                        Serial.println("UN");
                        break;
                      case 38:
                        playcomplete("38.WAV");
                        Serial.println("DOS");
                        break;
                      case 39:
                        playcomplete("39.WAV");
                        Serial.println("TRES");
                        break;
                      case 40:
                        playcomplete("40.WAV");
                        Serial.println("QUATRE");
                        break;
                      case 41:
                        playcomplete("41.WAV");
                        Serial.println("UN");
                        break;
                      case 42:
                        playcomplete("42.WAV");
                        Serial.println("DOS");
                        break;
                      case 43:
                        playcomplete("43.WAV");
                        Serial.println("TRES");
                        break;
                      case 44:
                        playcomplete("44.WAV");
                        Serial.println("QUATRE");
                        break;
                      case 45:
                        playcomplete("45.WAV");
                        Serial.println("UN");
                        break;
                      case 46:
                        playcomplete("46.WAV");
                        Serial.println("DOS");
                        break;
                      case 47:
                        playcomplete("47.WAV");
                        Serial.println("TRES");
                        break;
                      case 48:
                        playcomplete("48.WAV");
                        Serial.println("QUATRE");
                        break;
                      case 49:
                        playcomplete("49.WAV");
                        Serial.println("UN");
                        break;
                      case 50:
                        playcomplete("50.WAV");
                        Serial.println("DOS");
                        break;
                    
          
           }
          }
        



        byte check_switches()
        {
          static byte previous[6];
          static long time[6];
          byte reading;
          byte pressed;
          byte index;
          pressed = 0;

          for (byte index = 0; index < 6; ++index) {
            reading = digitalRead(14 + index);
            if (reading == LOW && previous[index] == HIGH && millis() - time[index] > DEBOUNCE)
            {
              // switch pressed
              time[index] = millis();
              pressed = index + 1;
              break;
            }
            previous[index] = reading;
          }
          // return switch number (1 - 6)
          return (pressed);
        }


        // Plays a full file from beginning to end with no pause.
        void playcomplete(char *name) {
          // call our helper to find and play this name
          playfile(name);
          while (wave.isplaying && (abs (sensorValue-(analogRead(analogInPin)))<=20)) {
          // do nothing while its playing
          }
          // now its done playing
        }

        void playfile(char *name) {
          // see if the wave object is currently doing something
          if (wave.isplaying) {// already playing something, so stop it!
            wave.stop(); // stop it
          }
          // look in the root directory and open the file
          if (!f.open(root, name)) {
            putstring("Couldn't open file "); Serial.print(name); return;
          }
          // OK read the file and turn it into a wave object
          if (!wave.create(f)) {
            putstring_nl("Not a valid WAV"); return;
          }
        
          // ok time to play! start playback
          wave.play();
        }

No hay comentarios:

Publicar un comentario