Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: PinDetect SDFileSystem Speaker TextLCD mbed wave_player
Fork of musicplayer by
Revision 0:4b3056d3c684, committed 2014-03-13
- Comitter:
- sarthakjaiswal
- Date:
- Thu Mar 13 00:23:46 2014 +0000
- Child:
- 1:45d8f6557ff8
- Commit message:
- Debugged version
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PinDetect.lib Thu Mar 13 00:23:46 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/AjK/code/PinDetect/#cb3afc45028b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SDFileSystem.lib Thu Mar 13 00:23:46 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/SDFileSystem/#c8f66dc765d4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Speaker.lib Thu Mar 13 00:23:46 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/zchen311/code/Speaker/#41292907c9cb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TextLCD.lib Thu Mar 13 00:23:46 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/simon/code/TextLCD/#308d188a2d3a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Thu Mar 13 00:23:46 2014 +0000
@@ -0,0 +1,150 @@
+#include "mbed.h"
+#include "SDFileSystem.h"
+#include "wave_player.h"
+#include "TextLCD.h"
+#include "PinDetect.h"
+#include "Speaker.h"
+#include <vector>
+#include <string>
+
+DigitalOut myled(LED1);
+DigitalOut myled2(LED2);
+DigitalOut myled3(LED3);
+DigitalOut myled4(LED4);
+
+using namespace std;
+
+SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
+TextLCD lcd(p9, p10, p11, p12, p13, p14); // rs, e, d4-d7
+DigitalIn sdDetect(p17);
+
+PinDetect pb1(p28); // up shift
+PinDetect pb2(p29); // down shift
+PinDetect pb3(p30); // pause
+PinDetect pb4(p27); // volume or play
+
+
+AnalogOut DACout(p18);
+wave_player waver(&DACout);
+int pos = 0;
+int xx = -1;
+int vol = 0;
+//extern "C" {
+//int SD_inserted();
+//}
+//extern "C" virtual disk_initialize();
+/*int disk_initialize();
+}*/
+bool playing = false;
+bool old_playing = false;
+vector<string> filenames; //filenames are stored in a vector string
+void read_file_names(char *dir)
+{
+ DIR *dp;
+ struct dirent *dirp;
+ dp = opendir(dir);
+ //read all directory and file names in current directory into filename vector
+ while((dirp = readdir(dp)) != NULL) {
+ filenames.push_back(string(dirp->d_name));
+ }
+}
+
+void pb1_hit_callback (void)
+{
+ int l = filenames.size();
+ if (pos < (l-1)) {
+ pos++;
+ } else if (pos == (l-1)) {
+ pos = 0;
+ }
+ string songname = filenames[pos];
+ unsigned index = songname.find(".wav");
+ songname = songname.substr(0,index);
+ lcd.cls();
+ lcd.printf(songname.c_str());
+}
+void pb2_hit_callback (void)
+{
+ int l = filenames.size();
+ if (pos > 0) {
+ pos--;
+ } else if (pos == 0 ) {
+ pos = l-1;
+ }
+ string songname = filenames[pos];
+ unsigned index = songname.find(".wav");
+ songname = songname.substr(0,index);
+ lcd.cls();
+ lcd.printf(songname.c_str());
+}
+
+void pb3_hit_callback (void)
+{
+ if (playing == false) {
+ playing = true;
+ // old_playing = false;
+ } else if (playing == true) {
+ lcd.cls();
+ playing = false;
+ // old_playing = true;
+ string songname = filenames[pos];
+ unsigned index = songname.find(".wav");
+ songname = songname.substr(0,index);
+ lcd.printf(songname.c_str());
+ }
+}
+void pb4_hit_callback (void){
+ vol = (vol+1) % 16;
+}
+
+int main()
+{
+ sdDetect.mode(PullUp);
+ wait(.1);
+ //wait after pulling up the sd card,
+ // read file names into vector of strings
+ pb1.mode(PullUp);
+ pb2.mode(PullUp);
+ pb3.mode(PullUp);
+ pb4.mode(PullUp);
+ // Delay for initial pullup to take effect
+ wait(.01);
+ // Setup Interrupt callback functions for a pb hit
+ pb1.attach_deasserted(&pb1_hit_callback);
+ pb2.attach_deasserted(&pb2_hit_callback);
+ pb3.attach_deasserted(&pb3_hit_callback);
+ pb4.attach_deasserted(&pb4_hit_callback);
+ // Start sampling pb inputs using interrupts
+ pb1.setSampleFrequency();
+ pb2.setSampleFrequency();
+ pb3.setSampleFrequency();
+ pb4.setSampleFrequency();
+ lcd.cls();
+ while(sdDetect ==0) {
+ lcd.locate(0,0);
+ lcd.printf("Insert SD Card");
+ wait(.5);
+ }
+ //sd.disk_initialize();
+ lcd.cls();
+ //SD_inserted();
+ //lcd.locate(0,0);
+ //lcd.printf("Insert SD Card");
+ wait(.5);
+ sd.disk_initialize();
+ read_file_names("/sd/Music");
+ while(1) {
+ //while pb3 is low, then we can start playing the song
+ while(playing == true) {
+ string songname = filenames[pos];
+ string a = "/sd/Music/";
+ string fname = a + songname;
+ FILE *wave_file;
+ lcd.locate(0,1);
+ lcd.printf("Now Playing");
+ wave_file = fopen(fname.c_str(),"r");
+ waver.play(wave_file);
+ fclose(wave_file);
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Thu Mar 13 00:23:46 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/8e73be2a2ac1 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wave_player.lib Thu Mar 13 00:23:46 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/sarthakjaiswal/code/wave_player/#bd0772f13bc8
