Forum Rule: Always post complete source code & details to reproduce any issue!
Page 1 of 2 1 2 LastLast
Results 1 to 25 of 29

Thread: Teensy 3.0 + Ada FRuit VS1053 Audio Breakout Board Problems

  1. #1

    Teensy 3.0 + Ada FRuit VS1053 Audio Breakout Board Problems

    Hi. I'm trying to use the ada fruit VS1053B breakout board (http://www.adafruit.com/products/1381).

    It's pretty cool, as it has the VS1053 and a micro sd breakout on the same card. It works great with my Arduino Uno r3 and Teensy 2.0 boards, but I've been transiutionaing to the Teensy 3.0 board fro a project, and the code no longer compiles (presumably b/c the processor is different on the Teensy 3.0). Here's a link to the github code/examples: https://github.com/adafruit/Adafruit_VS1053_Library

    I'm not sure if there is something "simple" that can be done to adapt the Adafruit code to work on the Teensy3 board (it's above my head at this point). Does anyone have an idea? (Bonus Question: does anyone know if I can turn on line numbers in the arduino IDE?)

    Here's the specific error list from the arduino IDE:
    /Users/brandon/Documents/Arduino/libraries/Adafruit_VS1053_Library/Adafruit_VS1053.cpp:20:7: error: expected constructor, destructor, or type conversion before '(' token
    /Users/brandon/Documents/Arduino/libraries/Adafruit_VS1053_Library/Adafruit_VS1053.cpp: In member function 'boolean Adafruit_VS1053_FilePlayer::useInterrupt(uint8_t)' :
    /Users/brandon/Documents/Arduino/libraries/Adafruit_VS1053_Library/Adafruit_VS1053.cpp:54:5: error: 'OCR0A' was not declared in this scope
    /Users/brandon/Documents/Arduino/libraries/Adafruit_VS1053_Library/Adafruit_VS1053.cpp:55:5: error: 'TIMSK0' was not declared in this scope
    /Users/brandon/Documents/Arduino/libraries/Adafruit_VS1053_Library/Adafruit_VS1053.cpp:55:15: error: 'OCIE0A' was not declared in this scope

  2. #2
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    28,479
    I took a quick look and added code for Teensy.

    Please give this copy a try, and let me know if it works? (I don't have the actual VS1053 board here for testing)

    https://github.com/PaulStoffregen/Ad...VS1053_Library

  3. #3
    This compiles without error! I'll let you know how if there are any issues once I breadboard the VS1053 breakout to the Teensy3.0. Thanks so much for building in support for the amazing Teensy 3.0 and this library!

  4. #4
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    28,479
    Any word, does it work on Teensy 3.0?

  5. #5
    Paul, it worked great. The Teensy3.0 now compiles and works with the Adafruit VS1053B breakout. Nice work! This should give Teensy3.0 users access to sound (mp3, wav, ogg, etc) and an SD card reader in one board. On a side note, the SPI SCLK pin on the teensy also has the LED on it (pin 13). At first I couldn't figure out why the LED was blinking so erratically, and then I realized I was seeing the SCLK signal on the LED. Is there any way to disable the LED on the teensy? Not a deal breaker, just curious. Thanks again for your help Paul!

  6. #6
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    28,479
    Thanks for the followup.

    I've submitted a pull request to Adafruit, so hopefully these edits will become part of the official version.

  7. #7
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    28,479
    Can you confirm if the modified code still works on Arduino Uno or other normal Arduino boards?

    Adafruit is asking for a verification before they accept the change into the official version of this library. I don't actually have one of these VS1053 boards for testing.

  8. #8
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    28,479
    Here is the pull request and conversation from LadyAda.

    https://github.com/adafruit/Adafruit...Library/pull/2

    Feel free to comment there on github, or here. Would be nice if this could get merged into the official library, so others won't have to run into these problems.

  9. #9
    Senior Member
    Join Date
    Nov 2012
    Location
    Los Angeles
    Posts
    129
    Sorry to revive an old thread, but quick question:

    what pin did you/should I use as the data request/interrupt pin? (t3)

    Thanks,
    David
    Last edited by virtualdave; 11-28-2013 at 01:31 AM.

  10. #10
    Senior Member
    Join Date
    Nov 2012
    Location
    Los Angeles
    Posts
    129
    Never mind the interrupt pin question...I see that the t3 can use any pin as the interrupt pin (yeah t3!). I chose pin 7...just because it felt right.

    I'm having troubles, however. If I use the method for playing sounds from beginning to end with no interrupt (playFullFile) everything seems to behave OK. If I use the interrupt method (startPlayingFile) (which would allow the t3 to do other things at the same time), playback is very questionable. If I set up a simple loop with a 1s delay, the playback often craps out after about 10 or so loops (and the LED on the t3, which shares the SPI clock pin, becomes pretty sporadic, then finally stops blinking). In the sketch below I have a method where key presses will trigger sound files. With the startplayingfile method I can interrupt the playback of one sound file with another...but this often lasts for only a few tries before playback stops/freezes.

    @Brandon: did you ever have much luck with the startPlayingFile method? Just curious before I start pestering the adafruit folks.

    I also don't have much luck with playing back 44/16 wav files. It'll play the file once, with a bit of distortion, then all playback stops.

    And if I could find a method that would stop playback that worked (setting playingMusic to false doesn't seem to work as suggested on the adafruit board)...well that would be lovely.

    And setting the volume doesn't seem to work at all.

    Paul, when is that fancy audio board of yours going to be finished?!?!

    Attached is my code for testing/observing the above in case that helps. btw: which SD library should I be using? I don't recall installing anything special for the T3.

    Thanks in advance for any advice!
    David

    Code:
    #include <SPI.h>
    #include <Adafruit_VS1053.h>
    #include <SD.h>
    
    // define the pins used
    //#define CLK 13       // SPI Clock, shared with SD card
    //#define MISO 12      // Input data, from VS1053/SD card
    //#define MOSI 11      // Output data, to VS1053/SD card
    // Connect CLK, MISO and MOSI to hardware SPI pins. 
    
    // These can be any pins:
    #define RESET 9      // VS1053 reset pin (output)
    #define CS 10        // VS1053 chip select pin (output)
    #define DCS 8        // VS1053 Data/command select pin (output)
    #define CARDCS 4     // Card chip select pin
    // DREQ should be an Int pin, see http://arduino.cc/en/Reference/attachInterrupt
    #define DREQ 7       // VS1053 Data request, ideally an Interrupt pin
    
    
    Adafruit_VS1053_FilePlayer musicPlayer = Adafruit_VS1053_FilePlayer(RESET, CS, DCS, DREQ, CARDCS);
    
    byte serialIn;
    byte playbacknumber;
    
    void setup() {
      Serial.begin(9600);
    
      musicPlayer.begin(); // initialise the music player
      SD.begin(CARDCS);    // initialise the SD card
    
      musicPlayer.setVolume(0,0);
    
      musicPlayer.useInterrupt(VS1053_FILEPLAYER_PIN_INT);  // DREQ int
    }
    
    void loop() {
    
      while (Serial.available() > 0) { // mail call
        serialIn = Serial.read();
        if (serialIn == '1') {
          playbacknumber = 1;
        }
        if (serialIn == '2') { 
          playbacknumber = 2;
        }
        if (serialIn == '3') {
          playbacknumber = 3;
        }    
      } // end while
    
      // options below allow input via serial (1, 2, 3)
      if (playbacknumber == 1) {
        //musicPlayer.startPlayingFile("track001.mp3");
        musicPlayer.playFullFile("track001.mp3");
        playbacknumber = 0;
      }
      if (playbacknumber == 2) {
        //musicPlayer.startPlayingFile("track002.mp3");
        musicPlayer.playFullFile("track002.mp3");
        playbacknumber = 0;
      }
      if (playbacknumber == 3) {
        // can't get this to work...in theory should only work when "startplayingfile" has been called
        musicPlayer.playingMusic = false;
        playbacknumber = 0;
      }
    
      // uncomment below to loop playback of a sound file
      
      //musicPlayer.playFullFile("track001.mp3");
      //delay(1000);
      
    
    }
    Last edited by virtualdave; 11-28-2013 at 04:50 PM.

  11. #11
    Senior Member
    Join Date
    Nov 2012
    Location
    Los Angeles
    Posts
    129
    OK, I'm not sure the adafruit library is fully cooked. Playing a sound file seems pretty hit or miss (especially after a power cycle), and volume control even doubly so. Playing wav files is all miss. Is the standard SD library adequate for the T3? That's the main thing I'm thinking could be an issue (having never worked with SD cards on a T3 or any other micro for that matter).

    Thanks,
    David

  12. #12
    Junior Member
    Join Date
    Jun 2014
    Posts
    10

    how about the 3.1?

    Quote Originally Posted by PaulStoffregen View Post
    I took a quick look and added code for Teensy.

    Please give this copy a try, and let me know if it works? (I don't have the actual VS1053 board here for testing)

    https://github.com/PaulStoffregen/Ad...VS1053_Library
    Hi Paul - first and foremost thanks for everything so far - your teensy board is my favorite toy.
    now - I've been trying to operate the vs1053B as an ogg recorder with the teensy 3.1 (aruino ide 1.0.5 and teensiduino 1.19) and this very library.
    and I've noticed I'm missing bits on the reading from the chip.
    if I read the raw data in an OGG file that I recorded using an arduino mega (using notepad++) the file starts with OggS, but with the teensy is starts with '33)...
    OggS
    0x4f 0x67 0x67 0x53
    01001111011001110110011101010011

    '33)
    0x27 0x33 0x33 0x29
    00100111001100110011001100101001

    or if we put them next to each other:
    01001111011001110110011101010011
    00100111001100110011001100101001

    it looks as if I shifted the words one bit too much (and lost an LSB 1 too)...
    I've dug deep into the library itself and I'm still not sure how you defined the interrupts or the timers for __arm__ processors

    I'm fairly sure it's just a matter of a simple timer change that ruins recording.

    p.s. also trying to compile to lower speeds 16/8/4/2 give: Sd2Card.cpp:77:2: error: #error "MK20DX128 bus frequency must be 48 or 24 MHz"
    is it a 1.0.5 problem?

    thanks a bunch.

  13. #13
    Junior Member
    Join Date
    Jun 2014
    Posts
    10
    Well - I'll answer my own post. seems the problem was in the SPI.
    I used the record example so I knew it worked (plus tested on UNO and mega properly).
    the SD was easily verifiable with various tests (though no SdFat), seems the SPI needed: SPI.setClockDivider(SPI_CLOCK_DIVx); (and many thanks to t3andy - http://forum.pjrc.com/threads/1156-T...ull=1#post2344).
    it took a while to figure out the only real difference between the Arduino and teensy for this board was the clock rate. so that set me up on the path for SPI discovery. it still seems to freeze every now and then for no good reason but for now it at least records some ogg.

  14. #14
    Junior Member
    Join Date
    Oct 2014
    Posts
    2
    Quote Originally Posted by Zed View Post
    Well - I'll answer my own post. seems the problem was in the SPI.
    I used the record example so I knew it worked (plus tested on UNO and mega properly).
    the SD was easily verifiable with various tests (though no SdFat), seems the SPI needed: SPI.setClockDivider(SPI_CLOCK_DIVx); (and many thanks to t3andy - http://forum.pjrc.com/threads/1156-T...ull=1#post2344).
    it took a while to figure out the only real difference between the Arduino and teensy for this board was the clock rate. so that set me up on the path for SPI discovery. it still seems to freeze every now and then for no good reason but for now it at least records some ogg.
    [/I]

    Hi! I tried every combintation of x in SPI.setClockDivider(SPI_CLOCK_DIVx); using the most recent version of the VS1053 library from Adafruit. but I still can't get any MP3-Played using this breakout board and a Teensy 3.1. Anybody an idea how to fix this?
    Thanks!

  15. #15
    Junior Member
    Join Date
    Jun 2014
    Posts
    10

    more data?

    Quote Originally Posted by galeviel View Post
    [/I]

    Hi! I tried every combintation of x in SPI.setClockDivider(SPI_CLOCK_DIVx); using the most recent version of the VS1053 library from Adafruit. but I still can't get any MP3-Played using this breakout board and a Teensy 3.1. Anybody an idea how to fix this?
    Thanks!
    could you please post your code?
    how did you set up the SPI control legs? because the example in adafruit is for uno and the teensy has other SPI legs:
    #define RESET 17 // VS1053 reset pin (output)
    #define CS 10 // VS1053 chip select pin (output)
    #define DCS 16 // VS1053 Data/command select pin (output)
    #define CARDCS A0 // Card chip select pin
    #define DREQ A1 // VS1053 Data request, ideally an Interrupt pin

    let me know how that turned out for you.

  16. #16
    Junior Member
    Join Date
    Oct 2014
    Posts
    2
    Quote Originally Posted by Zed View Post
    could you please post your code?
    how did you set up the SPI control legs? because the example in adafruit is for uno and the teensy has other SPI legs:
    #define RESET 17 // VS1053 reset pin (output)
    #define CS 10 // VS1053 chip select pin (output)
    #define DCS 16 // VS1053 Data/command select pin (output)
    #define CARDCS A0 // Card chip select pin
    #define DREQ A1 // VS1053 Data request, ideally an Interrupt pin

    let me know how that turned out for you.
    HI,

    Thank you for your fast reply!

    I measured the SPI-Clock @ 8 MHz on the teensy 3.1, which might be to high since the max SPI-Clock of the VS1053 is listed @ 5 MHz. Nevertheless, even changing the SPI_CLOCK_DIV in the adafruit lib didn't change much.

    To answer your questions:

    Pin-Setup on Teensy 3.1:
    VS1053-AdafruitBreakout ==> Teensy 3.1
    CLK ==> 13
    MISO ==> 12
    MOSI ==> 11
    DREQ ==> 5
    CS ==> 20
    Reset ==>23
    DCS(XDCS) ==> 22
    CARDSCS(SDCS) ==> 21

    Sourcecode:
    I didn't modify much in the end starting from the Adafruit exemple code...

    Code:
    /*************************************************** 
      This is an example for the Adafruit VS1053 Codec Breakout
    
      Designed specifically to work with the Adafruit VS1053 Codec Breakout 
      ----> https://www.adafruit.com/products/1381
    
      Adafruit invests time and resources providing this open source code, 
      please support Adafruit and open-source hardware by purchasing 
      products from Adafruit!
    
      Written by Limor Fried/Ladyada for Adafruit Industries.  
      BSD license, all text above must be included in any redistribution
     ****************************************************/
    
    // include SPI, MP3 and SD libraries
    #include <SPI.h>
    #include <Adafruit_VS1053.h>
    #include <SD.h>
    
    #define CORE_TEENSY 1
    //SPI.setClockDivider(SPI_CLOCK_DIV2);
    
    #define CLK 13 // SPI Clock, shared with SD card
    #define MISO 12 // Input data, from VS1053/SD card
    #define MOSI 11 // Output data, to VS1053/SD card
    #define RESET 23 // VS1053 reset pin (output)
    #define CS 20 // VS1053 chip select pin (output)
    #define DCS 22 // VS1053 Data/command select pin (output)
    #define DREQ 5 // VS1053 Data request pin (into Arduino)
    #define CARDCS 21 // Card chip select pin
    Adafruit_VS1053_FilePlayer musicPlayer = Adafruit_VS1053_FilePlayer(RESET, CS, DCS, DREQ, CARDCS);
    
    void setup() {
      Serial.begin(9600);
     // pinMode(RESET, OUTPUT);
     // digitalWrite(RESET, HIGH);
      Serial.println("Adafruit VS1053 Simple Test");
    
      if (! musicPlayer.begin()) { // initialise the music player
         Serial.println(F("Couldn't find VS1053, do you have the right pins defined?"));
         while (1);
      }
      Serial.println(F("VS1053 found"));
      
      SD.begin(CARDCS);    // initialise the SD card
      
      // Set volume for left, right channels. lower numbers == louder volume!
      musicPlayer.setVolume(20,20);
    
      // Timer interrupts are not suggested, better to use DREQ interrupt!
      //musicPlayer.useInterrupt(VS1053_FILEPLAYER_TIMER0_INT); // timer int
    
      // If DREQ is on an interrupt pin (on uno, #2 or #3) we can do background
      // audio playing
      musicPlayer.useInterrupt(VS1053_FILEPLAYER_PIN_INT);  // DREQ int
      
      // Play one file, don't return until complete
      Serial.println(F("Playing track 001"));
      musicPlayer.playFullFile("track001.mp3");
      // Play another file in the background, REQUIRES interrupts!
      Serial.println(F("Playing track 002"));
      musicPlayer.startPlayingFile("track002.mp3");
    }
    
    void loop() {
      // File is playing in the background
      if (musicPlayer.stopped()) {
        Serial.println("Done playing music");
        while (1);
      }
      if (Serial.available()) {
        char c = Serial.read();
        
        // if we get an 's' on the serial console, stop!
        if (c == 's') {
          musicPlayer.stopPlaying();
        }
        
        // if we get an 'p' on the serial console, pause/unpause!
        if (c == 'p') {
          if (! musicPlayer.paused()) {
            Serial.println("Paused");
            musicPlayer.pausePlaying(true);
          } else { 
            Serial.println("Resumed");
            musicPlayer.pausePlaying(false);
          }
        }
      }
    
      delay(100);
    }
    Thank you a lot for your time!
    Last edited by galeviel; 11-15-2014 at 12:15 PM. Reason: corrections

  17. #17
    Junior Member
    Join Date
    Jun 2014
    Posts
    10

    testing again.

    Quote Originally Posted by galeviel View Post
    HI,

    Thank you for your fast reply!

    I measured the SPI-Clock @ 8 MHz on the teensy 3.1, which might be to high since the max SPI-Clock of the VS1053 is listed @ 5 MHz. Nevertheless, even changing the SPI_CLOCK_DIV in the adafruit lib didn't change much.
    since it's a code from adafruit it's probably very well tested. you changed little in it but leg numbers I trust.
    so here is what I'd try next:

    SPI.setClockDivider(SPI_CLOCK_DIV4 );
    at the end if the setup.

    and check for full path to the mp3 file.

  18. #18
    Senior Member
    Join Date
    Nov 2012
    Location
    Boston, MA, USA
    Posts
    1,135
    Quote Originally Posted by galeviel View Post
    I measured the SPI-Clock @ 8 MHz on the teensy 3.1, which might be to high since the max SPI-Clock of the VS1053 is listed @ 5 MHz. Nevertheless, even changing the SPI_CLOCK_DIV in the adafruit lib didn't change much.
    You don't need to mess about with clock dividers (which can be complex, when implementations try to second-guess what that might mean to get some sort of AVR-compatibility). Instead, if you want a 5MHz clock (or 4Mhz or whatever you decide to use) just set that explicitly with SPISettings.

    See
    http://www.pjrc.com/teensy/td_libs_SPI.html
    Last edited by Nantonos; 02-02-2015 at 02:04 PM. Reason: spelling

  19. #19

    temporary workaround: underclock to 24 MHz

    Quote Originally Posted by galeviel View Post
    [/I]

    Hi! I tried every combintation of x in SPI.setClockDivider(SPI_CLOCK_DIVx); using the most recent version of the VS1053 library from Adafruit. but I still can't get any MP3-Played using this breakout board and a Teensy 3.1. Anybody an idea how to fix this?
    Thanks!
    I have a temporary solution of under clocking the Teensy to 24 MHz. (http://www.shashankteotia.in/vs1053b-teensy-3-1)

  20. #20
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    28,479
    If anyone is still watching this old thread, I worked on this library, fixing several long-standing bugs. Really, it's pretty remarkable this library has ever even worked on AVR.

    Please give this copy a try and let me know how it works for you?

    https://github.com/PaulStoffregen/Ad...VS1053_Library

  21. #21
    Member
    Join Date
    Jul 2013
    Location
    Colorado
    Posts
    87
    Thanks Paul,

    I have a couple of these from last Christmas, will have to pull them out and give this a go again. Cheers

  22. #22
    Senior Member
    Join Date
    Apr 2014
    Posts
    367
    Reviving this old thread..........
    I am trying out the Adafruit VS1053 Breakout with the Teensy 3.1
    I am using the library for the post above and the Player_simple example
    I have problems understanding which pins of breakout to connect to the Teensy...???
    First I un-commented the lines
    #define CLK 13 and connected SCLK to Teensy pin 13..the LED one
    #define MISO 12 and connected MISO to Teensy pin 12
    #define MOSI 11 and connected MOSI to Teensy pin 11
    Then connected.....
    RST to teensy pin 9
    CS to teensy pin 10
    SDCS to teensy pin 8
    SDCD to teensy pin 4
    DREQ to teensy pin 3
    VCC to teensy 5 v pin
    GND to teensy GND
    Using Rout and Lout and AGND for audio output

    Sketch compiles without error
    Uploads to teensy OK and appears to run with the following Serial Monitor output

    Adafruit VS1053 Simple Test
    VS1053 found
    Playing track 001
    Playing track 002
    Done playing music

    But no sound ......I do get a click in headphones or speakers

    My confusion is the proper use of the pins of VS1053 breakout

    CS, SDCD, XDCS, SDCS, DREQ, RST ..........

    would be grateful for any help please................

  23. #23
    Senior Member
    Join Date
    Apr 2014
    Posts
    367
    Finally worked out a combination of connections that works...........

    VS1053 Breakout >>>>> Teensy 3.1 pin

    MOSI >>>>>>>> Pin11
    MISO >>>>>>>> Pin12
    SCLK >>>>>>>> Pin13
    DREQ >>>>>>>> Pin3
    XDCS >>>>>>>> Pin8
    SDCS >>>>>>>> Pin4
    CS >>>>>>>>> Pin10
    RST >>>>>>>>> Pin9

    Have only played MP3 and WAV files

    Both play OK.

    But if critical about tail ends of files and how file starts to play, delays gaps etc.......Then....
    MP3 files long fade out tail end of file that is playing and a short fade in of next file to play.....??? Results in gaps of about 15 milliseconds ++.
    WAV files....the tail end of the file playing gets distorted for approx the last 1 - 2 milliseconds. Start of next to play is OK.
    This was just tested on successive startPlayingFile playing in a loop. And the WAV file did not always start to play, some starts missed.

    Teensy3.1 and Audio Adaptor board would seem to be faster and cleaner at playing fast transition between sound files than the Adafruit VS1052 Breakout...???

  24. #24
    Senior Member
    Join Date
    Apr 2014
    Posts
    367
    Paul wrote...........

    Please give this copy a try and let me know how it works for you?

    https://github.com/PaulStoffregen/Ad...VS1053_Library


    Paul, You were wanting some feedback on this so I gave it a go using Teensy3.1 and got it working as per my last 2 posts....with a bit of "pin fiddling"

    But as described I am getting a similar problem as I was getting a few weeks ago when trying out the teensy with the Audio adaptor in that there was distortion as a file stopped playing and another one started. You sorted that with your fix to the Teensy audio library PlaySDwav etc last week.

    I am wondering is this the same type of problem although now using the Adafruit/Arduino library for the VS1053 BOB.

    If so do you think this is a library software problem or a problem in the chip internal routines.??

    I assume the Teensy Audio Library reads the file from the SD over SPI and sends it over I2S to the Audio Adaptor Board and then to output.

    With the VS1053 BOB I assume the Teensy reads the file from the SD over SPI and sends it to the VS1052 chip by sharing the SPI bus. Is that controlled by DREQ.?

    If I were to use the Teensy Audio Library etc instead, might that sort the distortion problem, but are there any routines already in teensy libraries for sharing the SPI etc that would work with the VS1053. OR how do I go about it.?

    The advantage of using this BOB is that it can decode "if it works properly" several types of audio MP3, WAV etc and has MIDI sounds on board and also stereo analog out. I think the I2S is only for output to another I2S device.? I would just like to get it working without the distortion on the SD files.

    I tried the MIDI and it worked....I let it boot into MIDI mode and with a sketch sending some MIDI commands was able to play various sounds on demand etc.

    Thanks for your help and I look forward to getting this sorted..............

  25. #25
    Senior Member
    Join Date
    Apr 2014
    Posts
    367
    I have got this Adafruit board playing with Teensy3.1. It plays OK but I have found somethig perculiar when trying to play in a loop and wait for playingMusic to stop and then go round the loop again. The while statement does not seem to see the change to false when playing comes to end of file except I have something in the While eg a delay of something. And it is the same for using if statement....simplified example of loop code below. Each behave the same. Using the first while it just plays the file to the end once and waits indefinately. The second and third do same if no delay in loop. With the delay it works OK and repeats the loop. This is still using the play_simple example from the VS1053 library.


    void loop() {

    musicPlayer.startPlayingFile("KHz1.wav");

    //xxx 1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    while (musicPlayer.playingMusic);

    //xxxx 2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    /*

    while (musicPlayer.playingMusic)
    {
    delay(1);
    }

    */

    //xxxx 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    /*

    doagain:
    if (musicPlayer.playingMusic)
    {
    delay(1);
    goto doagain;
    }

    */

    //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


    }

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •