|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- /***************************************************
- 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 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.
- // See http://arduino.cc/en/Reference/SPI "Connections"
-
- // These are the pins used for the breakout example
- #define BREAKOUT_RESET 9 // VS1053 reset pin (output)
- #define BREAKOUT_CS 10 // VS1053 chip select pin (output)
- #define BREAKOUT_DCS 8 // VS1053 Data/command select pin (output)
- // These are the pins used for the music maker shield
- #define SHIELD_CS 7 // VS1053 chip select pin (output)
- #define SHIELD_DCS 6 // VS1053 Data/command select pin (output)
-
- // These are common pins between breakout and shield
- #define CARDCS 4 // Card chip select pin
- // DREQ should be an Int pin, see http://arduino.cc/en/Reference/attachInterrupt
- #define DREQ 3 // VS1053 Data request, ideally an Interrupt pin
-
- Adafruit_VS1053_FilePlayer musicPlayer =
- // create breakout-example object!
- Adafruit_VS1053_FilePlayer(BREAKOUT_RESET, BREAKOUT_CS, BREAKOUT_DCS, DREQ, CARDCS);
- // create shield-example object!
- //Adafruit_VS1053_FilePlayer(SHIELD_CS, SHIELD_DCS, DREQ, CARDCS);
-
- void setup() {
- Serial.begin(9600);
- 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);
- }
|