Arduino MP3 Shield MP3Player This program comes from http://mbed.org/cookbook/VS1002-MP3-Decoder (Very small modification done to fit latest libs) **Additional small mods to xshige\'s code by mpetersen3 and kbuck3 to add a user interface

Dependencies:   mbed

Committer:
mpetersen3
Date:
Tue Oct 12 21:25:35 2010 +0000
Revision:
0:9cb0b3d1b9e6
This revision adds a user interface for the mp3 player

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mpetersen3 0:9cb0b3d1b9e6 1
mpetersen3 0:9cb0b3d1b9e6 2 #include "mbed.h"
mpetersen3 0:9cb0b3d1b9e6 3 #include "VS1002.h"
mpetersen3 0:9cb0b3d1b9e6 4 #include "TextLCD.h"
mpetersen3 0:9cb0b3d1b9e6 5
mpetersen3 0:9cb0b3d1b9e6 6 TextLCD lcd2(p10, p18, p24, p23, p22, p21, TextLCD::LCD16x2 ); // rs, e, d0-d3
mpetersen3 0:9cb0b3d1b9e6 7
mpetersen3 0:9cb0b3d1b9e6 8
mpetersen3 0:9cb0b3d1b9e6 9 /*
mpetersen3 0:9cb0b3d1b9e6 10
mpetersen3 0:9cb0b3d1b9e6 11 Arduino MP3 Shield MP3Player_UI
mpetersen3 0:9cb0b3d1b9e6 12 2010/10/10
mpetersen3 0:9cb0b3d1b9e6 13 This program comes from http://mbed.org/cookbook/VS1002-MP3-Decoder and is the work of xshige.
mpetersen3 0:9cb0b3d1b9e6 14 (Very small modification done to fit latest libs)
mpetersen3 0:9cb0b3d1b9e6 15 **more small modifications done to add a small user interface via LCD screen, rotary encoder and dipswitch,
mpetersen3 0:9cb0b3d1b9e6 16 see http://mbed.org/cookbook/MP3-Player for more information on pinout for these devices, these UI mods by (mpetersen3 and kbuck3)
mpetersen3 0:9cb0b3d1b9e6 17
mpetersen3 0:9cb0b3d1b9e6 18 Pin Assigenment for Arduino MP3 Shield
mpetersen3 0:9cb0b3d1b9e6 19 (VS1053 employed, issued by sparkfun.com)
mpetersen3 0:9cb0b3d1b9e6 20
mpetersen3 0:9cb0b3d1b9e6 21 MP3 Sheild Side | mbed Side
mpetersen3 0:9cb0b3d1b9e6 22 ---------------------------------------
mpetersen3 0:9cb0b3d1b9e6 23 D2(BSYNC)------------17
mpetersen3 0:9cb0b3d1b9e6 24 D3(DREQ)-------------16
mpetersen3 0:9cb0b3d1b9e6 25
mpetersen3 0:9cb0b3d1b9e6 26 D9(CS)---------------14
mpetersen3 0:9cb0b3d1b9e6 27
mpetersen3 0:9cb0b3d1b9e6 28 D11(MOSI)------------5
mpetersen3 0:9cb0b3d1b9e6 29 D12(MISO)------------6
mpetersen3 0:9cb0b3d1b9e6 30 D13(SCK)-------------7
mpetersen3 0:9cb0b3d1b9e6 31
mpetersen3 0:9cb0b3d1b9e6 32 GND------------------GND(1)
mpetersen3 0:9cb0b3d1b9e6 33 5V-------------------VU(39)
mpetersen3 0:9cb0b3d1b9e6 34 RESET----------------15
mpetersen3 0:9cb0b3d1b9e6 35
mpetersen3 0:9cb0b3d1b9e6 36 Volume will not used. (pin20 will not used)
mpetersen3 0:9cb0b3d1b9e6 37
mpetersen3 0:9cb0b3d1b9e6 38 */
mpetersen3 0:9cb0b3d1b9e6 39
mpetersen3 0:9cb0b3d1b9e6 40
mpetersen3 0:9cb0b3d1b9e6 41 //PinName mmosi, PinName mmiso, PinName ssck, PinName ccs, const char *name,
mpetersen3 0:9cb0b3d1b9e6 42 // PinName mosi, PinName miso, PinName sck, PinName cs, PinName rst,
mpetersen3 0:9cb0b3d1b9e6 43 // PinName dreq, PinName dcs, PinName vol)
mpetersen3 0:9cb0b3d1b9e6 44 VS1002 mp3(p11, p12, p13, p8, "sd",
mpetersen3 0:9cb0b3d1b9e6 45 p5, p6, p7, p14, p15,
mpetersen3 0:9cb0b3d1b9e6 46 p16, p17, p20); //p14 in BoB non-functional so replace with p18
mpetersen3 0:9cb0b3d1b9e6 47 AnalogIn rotary(p19);
mpetersen3 0:9cb0b3d1b9e6 48 DigitalIn pause(p28);
mpetersen3 0:9cb0b3d1b9e6 49
mpetersen3 0:9cb0b3d1b9e6 50 int main () {
mpetersen3 0:9cb0b3d1b9e6 51 // make debug port Fast
mpetersen3 0:9cb0b3d1b9e6 52 Serial pc(USBTX, USBRX);
mpetersen3 0:9cb0b3d1b9e6 53 pc.baud(9600);
mpetersen3 0:9cb0b3d1b9e6 54
mpetersen3 0:9cb0b3d1b9e6 55
mpetersen3 0:9cb0b3d1b9e6 56 // pc.baud(115200);
mpetersen3 0:9cb0b3d1b9e6 57 // pc.baud(230400);
mpetersen3 0:9cb0b3d1b9e6 58
mpetersen3 0:9cb0b3d1b9e6 59 /*============================================================
mpetersen3 0:9cb0b3d1b9e6 60 * MP3 Initialising
mpetersen3 0:9cb0b3d1b9e6 61 *==========================================================*/
mpetersen3 0:9cb0b3d1b9e6 62 #ifndef FS_ONLY
mpetersen3 0:9cb0b3d1b9e6 63 mp3._RST = 1;
mpetersen3 0:9cb0b3d1b9e6 64 mp3.cs_high(); //chip disabled
mpetersen3 0:9cb0b3d1b9e6 65 mp3.sci_initialise(); //initialise MBED
mpetersen3 0:9cb0b3d1b9e6 66 mp3.sci_write(0x00,(SM_SDINEW+SM_STREAM+SM_DIFF));
mpetersen3 0:9cb0b3d1b9e6 67 mp3.sci_write(0x03, 0x9800);
mpetersen3 0:9cb0b3d1b9e6 68 mp3.sdi_initialise();
mpetersen3 0:9cb0b3d1b9e6 69 #endif
mpetersen3 0:9cb0b3d1b9e6 70 /*============================================================
mpetersen3 0:9cb0b3d1b9e6 71 * This is the good part
mpetersen3 0:9cb0b3d1b9e6 72 *==========================================================*/
mpetersen3 0:9cb0b3d1b9e6 73 int a=0;
mpetersen3 0:9cb0b3d1b9e6 74 printf("%i\n",a);
mpetersen3 0:9cb0b3d1b9e6 75 while (true) {
mpetersen3 0:9cb0b3d1b9e6 76
mpetersen3 0:9cb0b3d1b9e6 77
mpetersen3 0:9cb0b3d1b9e6 78
mpetersen3 0:9cb0b3d1b9e6 79
mpetersen3 0:9cb0b3d1b9e6 80 mp3.play_song(a);
mpetersen3 0:9cb0b3d1b9e6 81 a++;
mpetersen3 0:9cb0b3d1b9e6 82 wait(1);
mpetersen3 0:9cb0b3d1b9e6 83
mpetersen3 0:9cb0b3d1b9e6 84 if (pause) {
mpetersen3 0:9cb0b3d1b9e6 85 while (pause) {
mpetersen3 0:9cb0b3d1b9e6 86 // shows you which song number you have chosen using the rotary dial
mpetersen3 0:9cb0b3d1b9e6 87 lcd2.printf("You have chosen the %i song\n",a);
mpetersen3 0:9cb0b3d1b9e6 88 if ((rotary>0)&&(rotary<=0.1)) {
mpetersen3 0:9cb0b3d1b9e6 89 a=1;
mpetersen3 0:9cb0b3d1b9e6 90
mpetersen3 0:9cb0b3d1b9e6 91 } else if ((rotary>0.1)&&(rotary<=0.2)) {
mpetersen3 0:9cb0b3d1b9e6 92 a=2;
mpetersen3 0:9cb0b3d1b9e6 93 } else if ((rotary>0.2)&&(rotary<=0.3)) {
mpetersen3 0:9cb0b3d1b9e6 94 a=3;
mpetersen3 0:9cb0b3d1b9e6 95 } else if ((rotary>0.3)&&(rotary<=0.4)) {
mpetersen3 0:9cb0b3d1b9e6 96 a=4;
mpetersen3 0:9cb0b3d1b9e6 97 } else if ((rotary>0.4)&&(rotary<=0.5)) {
mpetersen3 0:9cb0b3d1b9e6 98 a=5;
mpetersen3 0:9cb0b3d1b9e6 99 } else if ((rotary>0.5)&&(rotary<=0.6)) {
mpetersen3 0:9cb0b3d1b9e6 100 a=6;
mpetersen3 0:9cb0b3d1b9e6 101 } else if ((rotary>0.6)&&(rotary<=0.7)) {
mpetersen3 0:9cb0b3d1b9e6 102 a=7;
mpetersen3 0:9cb0b3d1b9e6 103 } else if ((rotary>0.7)&&(rotary<=0.8)) {
mpetersen3 0:9cb0b3d1b9e6 104 a=8;
mpetersen3 0:9cb0b3d1b9e6 105 } else if ((rotary>0.8)&&(rotary<=0.9)) {
mpetersen3 0:9cb0b3d1b9e6 106 a=9;
mpetersen3 0:9cb0b3d1b9e6 107 } else if ((rotary>0.9)&&(rotary<=1.0)) {
mpetersen3 0:9cb0b3d1b9e6 108 a=10;
mpetersen3 0:9cb0b3d1b9e6 109 }
mpetersen3 0:9cb0b3d1b9e6 110 }
mpetersen3 0:9cb0b3d1b9e6 111 }
mpetersen3 0:9cb0b3d1b9e6 112 }
mpetersen3 0:9cb0b3d1b9e6 113 printf("Done.\r\n");
mpetersen3 0:9cb0b3d1b9e6 114 }