Instead of holding the songs on a SD card, this one is for a USB stick

Dependencies:   WavPlayer mbed C12832 MSCFileSystem WavPlayerSD

Committer:
JostBaus
Date:
Sun Apr 14 16:42:49 2019 +0000
Revision:
6:ea92f15a3798
Parent:
4:efd586e5c9a7
WavPlayer with USB instead of SDcard

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sarthakjaiswal 0:4b3056d3c684 1 #include "mbed.h"
JostBaus 2:b090afa8d3b9 2 #include "string.h"
JostBaus 2:b090afa8d3b9 3 #include "stdio.h"
JostBaus 2:b090afa8d3b9 4 #include "math.h"
JostBaus 2:b090afa8d3b9 5 #include "C12832.h"
JostBaus 4:efd586e5c9a7 6 #include "WavPlayer.h"
JostBaus 6:ea92f15a3798 7 #include "MSCFileSystem.h"
sarthakjaiswal 0:4b3056d3c684 8 #include <string>
sarthakjaiswal 0:4b3056d3c684 9 using namespace std;
sarthakjaiswal 0:4b3056d3c684 10
JostBaus 2:b090afa8d3b9 11 //Communication\interfaces
JostBaus 2:b090afa8d3b9 12 Serial pc(USBTX,USBRX); //USB serial
JostBaus 2:b090afa8d3b9 13 C12832 lcd(p5, p7, p6, p8, p11); //LCD
JostBaus 6:ea92f15a3798 14 MSCFileSystem msc("USB"); //USB
sarthakjaiswal 0:4b3056d3c684 15
JostBaus 2:b090afa8d3b9 16 //in- and outputs
JostBaus 2:b090afa8d3b9 17 DigitalIn PauseBtn(p21);
JostBaus 2:b090afa8d3b9 18 DigitalIn StopBtn(p22);
JostBaus 2:b090afa8d3b9 19
JostBaus 2:b090afa8d3b9 20 //joystick
JostBaus 4:efd586e5c9a7 21 BusIn joy(p19,p17,p18,p20);
JostBaus 2:b090afa8d3b9 22 DigitalIn joyBtn(p14);
JostBaus 2:b090afa8d3b9 23
JostBaus 2:b090afa8d3b9 24 //DAC output
JostBaus 4:efd586e5c9a7 25 WavPlayer waver; //set up DAC to use wave player library
sarthakjaiswal 0:4b3056d3c684 26
sarthakjaiswal 0:4b3056d3c684 27
JostBaus 2:b090afa8d3b9 28 //timer
JostBaus 2:b090afa8d3b9 29 Timer dur;
JostBaus 2:b090afa8d3b9 30
JostBaus 2:b090afa8d3b9 31 //func
JostBaus 2:b090afa8d3b9 32 void read_file_names(char *dir); //SDCard read file names
JostBaus 2:b090afa8d3b9 33 void menu();
JostBaus 2:b090afa8d3b9 34 void PlaySong(int m);
JostBaus 2:b090afa8d3b9 35 void PauseSong();
JostBaus 2:b090afa8d3b9 36 void StopSong();
JostBaus 2:b090afa8d3b9 37
JostBaus 2:b090afa8d3b9 38 //variables
JostBaus 2:b090afa8d3b9 39 int m = 1; //index of choosen songs
JostBaus 2:b090afa8d3b9 40 int i = 0; //index of files from folder
JostBaus 2:b090afa8d3b9 41 int Paused = 0; //Is the song paused?
JostBaus 2:b090afa8d3b9 42 int Stopped = 0; //Is the song stopped?
JostBaus 3:eb77b82ce461 43 char* songs[];
JostBaus 2:b090afa8d3b9 44
JostBaus 2:b090afa8d3b9 45 int main()
JostBaus 2:b090afa8d3b9 46 {
JostBaus 2:b090afa8d3b9 47 while(sdDetect == 0) {
JostBaus 2:b090afa8d3b9 48 lcd.locate(0,0);
JostBaus 3:eb77b82ce461 49 lcd.printf("Insert SD Card!");
JostBaus 2:b090afa8d3b9 50 wait(0.5);
JostBaus 2:b090afa8d3b9 51 }
JostBaus 2:b090afa8d3b9 52 menu();
JostBaus 2:b090afa8d3b9 53 }
JostBaus 2:b090afa8d3b9 54
JostBaus 2:b090afa8d3b9 55 void menu()
JostBaus 2:b090afa8d3b9 56 {
JostBaus 2:b090afa8d3b9 57 lcd.cls();
JostBaus 2:b090afa8d3b9 58 sd.disk_initialize();
JostBaus 6:ea92f15a3798 59 read_file_names("/USB/Music");
JostBaus 2:b090afa8d3b9 60 while(1) {
JostBaus 2:b090afa8d3b9 61 lcd.locate(0,0);
JostBaus 2:b090afa8d3b9 62 lcd.printf("Please select a song");
JostBaus 2:b090afa8d3b9 63 if(joy == 1) {
JostBaus 2:b090afa8d3b9 64 m++;
JostBaus 2:b090afa8d3b9 65 if(m == 5) {
JostBaus 2:b090afa8d3b9 66 m = 0;
JostBaus 2:b090afa8d3b9 67 }
JostBaus 2:b090afa8d3b9 68 } else if(joy == 2) {
JostBaus 2:b090afa8d3b9 69 m--;
JostBaus 2:b090afa8d3b9 70 if(m == -1) {
JostBaus 2:b090afa8d3b9 71 m = 4;
JostBaus 2:b090afa8d3b9 72 }
JostBaus 2:b090afa8d3b9 73 }
JostBaus 2:b090afa8d3b9 74 lcd.locate(0,15);
JostBaus 2:b090afa8d3b9 75 lcd.printf("%s", (songs[m]));
JostBaus 2:b090afa8d3b9 76 if(joyBtn == 1) {
JostBaus 2:b090afa8d3b9 77 PlaySong(m);
JostBaus 2:b090afa8d3b9 78 }
JostBaus 2:b090afa8d3b9 79 wait(0.1);
JostBaus 2:b090afa8d3b9 80 }
JostBaus 2:b090afa8d3b9 81 }
JostBaus 2:b090afa8d3b9 82
sarthakjaiswal 1:45d8f6557ff8 83 void read_file_names(char *dir) // function that reads in file names from sd cards
sarthakjaiswal 0:4b3056d3c684 84 {
sarthakjaiswal 0:4b3056d3c684 85 DIR *dp;
sarthakjaiswal 0:4b3056d3c684 86 struct dirent *dirp;
sarthakjaiswal 0:4b3056d3c684 87 dp = opendir(dir);
sarthakjaiswal 0:4b3056d3c684 88 //read all directory and file names in current directory into filename vector
sarthakjaiswal 0:4b3056d3c684 89 while((dirp = readdir(dp)) != NULL) {
JostBaus 2:b090afa8d3b9 90 songs[i] = dirp->d_name;
JostBaus 2:b090afa8d3b9 91 i++;
sarthakjaiswal 0:4b3056d3c684 92 }
sarthakjaiswal 0:4b3056d3c684 93 }
JostBaus 2:b090afa8d3b9 94
JostBaus 2:b090afa8d3b9 95 void PlaySong(int m)
sarthakjaiswal 0:4b3056d3c684 96 {
JostBaus 2:b090afa8d3b9 97 string songname = songs[m];
JostBaus 6:ea92f15a3798 98 string a = "/USB/Music/";
JostBaus 2:b090afa8d3b9 99 string fname = a + songname; //retrieves the file name
JostBaus 2:b090afa8d3b9 100 FILE *wave_file;
JostBaus 2:b090afa8d3b9 101 dur.start();
sarthakjaiswal 0:4b3056d3c684 102 lcd.cls();
JostBaus 2:b090afa8d3b9 103 lcd.locate(0,0);
JostBaus 2:b090afa8d3b9 104 lcd.printf("Now playing");
JostBaus 2:b090afa8d3b9 105 wave_file = fopen(fname.c_str(),"r"); //opens the music file
JostBaus 4:efd586e5c9a7 106 waver.open(wave_file);
JostBaus 4:efd586e5c9a7 107 waver.play(); //plays the music file
JostBaus 2:b090afa8d3b9 108 lcd.locate(0,10);
JostBaus 2:b090afa8d3b9 109 lcd.printf("%s", (songs[m]));
JostBaus 2:b090afa8d3b9 110 while(Stopped == 0) {
JostBaus 2:b090afa8d3b9 111 if(StopBtn == 1) {
JostBaus 2:b090afa8d3b9 112 StopSong();
JostBaus 2:b090afa8d3b9 113 }
JostBaus 2:b090afa8d3b9 114 if(PauseBtn == 1) {
JostBaus 2:b090afa8d3b9 115 PauseSong();
JostBaus 2:b090afa8d3b9 116 }
JostBaus 2:b090afa8d3b9 117 lcd.locate(0,20);
JostBaus 2:b090afa8d3b9 118 lcd.printf("%2.f s", dur.read());
JostBaus 2:b090afa8d3b9 119 }
JostBaus 2:b090afa8d3b9 120 fclose(wave_file);
JostBaus 2:b090afa8d3b9 121 menu();
sarthakjaiswal 0:4b3056d3c684 122 }
JostBaus 2:b090afa8d3b9 123
JostBaus 2:b090afa8d3b9 124 void PauseSong()
sarthakjaiswal 0:4b3056d3c684 125 {
JostBaus 3:eb77b82ce461 126 while(1) {
JostBaus 3:eb77b82ce461 127 if(Paused == 0) {
JostBaus 3:eb77b82ce461 128 string songname = songs[m];
JostBaus 3:eb77b82ce461 129 unsigned index = songname.find(".wav");
JostBaus 3:eb77b82ce461 130 songname = songname.substr(0,index);
JostBaus 3:eb77b82ce461 131 lcd.printf(songname.c_str());
JostBaus 3:eb77b82ce461 132 dur.stop();
JostBaus 3:eb77b82ce461 133 Paused = 1;
JostBaus 3:eb77b82ce461 134 } else if(StopBtn == 1) {
JostBaus 3:eb77b82ce461 135 StopSong();
JostBaus 3:eb77b82ce461 136 } else {
JostBaus 3:eb77b82ce461 137 Paused = 0;
JostBaus 3:eb77b82ce461 138 dur.start();
JostBaus 3:eb77b82ce461 139 }
sarthakjaiswal 0:4b3056d3c684 140 }
sarthakjaiswal 0:4b3056d3c684 141 }
sarthakjaiswal 0:4b3056d3c684 142
JostBaus 2:b090afa8d3b9 143 void StopSong()
sarthakjaiswal 0:4b3056d3c684 144 {
sarthakjaiswal 0:4b3056d3c684 145 lcd.cls();
JostBaus 2:b090afa8d3b9 146 dur.reset();
JostBaus 2:b090afa8d3b9 147 Stopped = 1;
sarthakjaiswal 0:4b3056d3c684 148 }
JostBaus 2:b090afa8d3b9 149
JostBaus 2:b090afa8d3b9 150
JostBaus 2:b090afa8d3b9 151
JostBaus 2:b090afa8d3b9 152