Georges Kamar / Mbed 2 deprecated Speech_Controlled_Music_Player

Dependencies:   4DGL-uLCD-SE PinDetect SDFileSystem Speaker mbed wave_player

Fork of Project_MP by Angus MacLean

Revision:
2:54dcfef5c648
Parent:
1:45d8f6557ff8
Child:
3:ecf799cef1db
diff -r 45d8f6557ff8 -r 54dcfef5c648 main.cpp
--- a/main.cpp	Mon Mar 17 18:48:13 2014 +0000
+++ b/main.cpp	Wed Dec 06 08:51:00 2017 +0000
@@ -1,7 +1,7 @@
 #include "mbed.h"
 #include "SDFileSystem.h"
 #include "wave_player.h"
-#include "TextLCD.h"
+#include "uLCD_4DGL.h"
 #include "PinDetect.h"
 #include "Speaker.h"
 #include <vector>
@@ -16,19 +16,21 @@
 using namespace std;
 
 SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
-TextLCD lcd(p9, p10, p11, p12, p13, p14); // rs, e, d4-d7
+uLCD_4DGL uLCD(p9,p10,p11);
 DigitalIn sdDetect(p17); // Set up a pin for SD Card Detect
 
-PinDetect pb1(p28); // pb forup shift
-PinDetect pb2(p29); // pb fordown shift
-PinDetect pb3(p30); // pb for pause
-PinDetect pb4(p27); // pb for volume or play
+PinDetect pb1(p21); // pb forup shift
+PinDetect pb2(p22); // pb fordown shift
+PinDetect pb3(p23); // pb for pause
+
+
 
 
 AnalogOut DACout(p18); //set up speaker
 wave_player waver(&DACout); //set up wave player library
 int pos = 0; // index of the song
-int vol = 0; // volume controller
+int vol = 0;
+
  
 bool playing = false; //variable for pause/play since we only have 1 pb for that
 vector<string> filenames; //filenames are stored in a vector string
@@ -55,8 +57,8 @@
     string songname = filenames[pos];
     unsigned index = songname.find(".wav");
     songname = songname.substr(0,index);
-    lcd.cls();
-    lcd.printf(songname.c_str()); //it clears screen and then sets the new index song in the lcd display
+    uLCD.cls();
+    uLCD.printf(songname.c_str()); //it clears screen and then sets the new index song in the uLCD display
 }
 //interrupt handler for pb2
 void pb2_hit_callback (void)
@@ -71,8 +73,8 @@
     string songname = filenames[pos];
     unsigned index = songname.find(".wav");
     songname = songname.substr(0,index);
-    lcd.cls();
-    lcd.printf(songname.c_str());
+    uLCD.cls();
+    uLCD.printf(songname.c_str());
 }
 //interrupt handler for 3rd pushbutton
 void pb3_hit_callback (void)
@@ -82,21 +84,15 @@
     if (playing == false) {
         playing = true; 
     } else if (playing == true) {
-        lcd.cls();
+        uLCD.cls();
         playing = false; 
         string songname = filenames[pos];
         unsigned index = songname.find(".wav");
         songname = songname.substr(0,index);
-        lcd.printf(songname.c_str());
+        uLCD.printf(songname.c_str());
     }
 }
-//interrupt handler for pb4
-void pb4_hit_callback (void){
-    // this pb changes the volume by lowering the volume until it reaches 0. then it resets to the max volume
-    // the volume range has been divided into 16 possible ranges. and hence, it toggles through those 16 values
-    // this only changes the variable vol, which is then used in the wave player file to actually adjust the volume
-    vol = (vol+1) % 16;
-}
+
 
 int main()
 {
@@ -107,39 +103,39 @@
     pb1.mode(PullUp);
     pb2.mode(PullUp);
     pb3.mode(PullUp);
-    pb4.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();
+    
+    uLCD.cls();
     //detects whethere there is a SD card or not.. if not then it prints and informs the user
     while(sdDetect ==0) {
-        lcd.locate(0,0);
-        lcd.printf("Insert SD Card");
+        uLCD.locate(0,0);
+        uLCD.printf("Insert SD Card");
         wait(.5);
     }    
-    lcd.cls(); 
+    uLCD.cls(); 
     wait(.5);
     sd.disk_initialize();
-    read_file_names("/sd/Music");
+    read_file_names("/sd/");
     while(1) {
         //while pb3 is low, then we can start playing the song
         while(playing == true) { //we have 2 while loops..one while loop makes sure the music player is always on, the other one is for the song
             string songname = filenames[pos];
-            string a = "/sd/Music/";
+            string a = "/sd/";
             string fname = a + songname; //retrieves the file name
             FILE *wave_file; 
-            lcd.locate(0,1);
-            lcd.printf("Now Playing");
+            uLCD.locate(0,4);
+            uLCD.printf("Now Playing");
             wave_file = fopen(fname.c_str(),"r"); //opens the music file
             waver.play(wave_file); //plays the music file
             fclose(wave_file);