wefwe

Dependencies:   mbed C12832 DogM163 FatFileSystem

Committer:
JostBaus
Date:
Sat Apr 20 17:07:46 2019 +0000
Revision:
26:304ecc4066a8
Parent:
20:ec1c4f02d50e
Child:
27:6e5cc34fb952
Software ready for CircuitBoard(may come changes depending on CB)

Who changed what in which revision?

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