Big Mouth Billy Bass player that takes raw wavefiles and decision list text files from an SD card

Dependencies:   SDFileSystem mbed BillyBass

Committer:
bikeNomad
Date:
Sat Jun 15 04:08:25 2013 +0000
Revision:
6:e90a12ca056f
Parent:
5:5b846ef42702
Child:
7:ce27f959813b
split files

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bikeNomad 5:5b846ef42702 1 #include "billybass.hpp"
bikeNomad 5:5b846ef42702 2 #include "song.hpp"
bikeNomad 5:5b846ef42702 3 #include "player.hpp"
bikeNomad 5:5b846ef42702 4 #include "action.hpp"
bikeNomad 0:0944c3654ded 5
bikeNomad 0:0944c3654ded 6 // Power:
bikeNomad 0:0944c3654ded 7 // Power GND J9/14
bikeNomad 0:0944c3654ded 8 // Vin (6V) J9/16
bikeNomad 0:0944c3654ded 9
bikeNomad 0:0944c3654ded 10 // Digital:
bikeNomad 5:5b846ef42702 11 DigitalOut tail(PTA13); // J3/2
bikeNomad 5:5b846ef42702 12 DigitalOut mouth(PTC12); // J3/1
bikeNomad 5:5b846ef42702 13 DigitalOut head(PTC13); // J3/3
bikeNomad 0:0944c3654ded 14
bikeNomad 0:0944c3654ded 15 DigitalIn pushbutton(PTD5); // J3/4
bikeNomad 0:0944c3654ded 16
bikeNomad 0:0944c3654ded 17 PwmOut redLED(LED_RED);
bikeNomad 0:0944c3654ded 18 PwmOut greenLED(LED_GREEN);
bikeNomad 0:0944c3654ded 19 PwmOut blueLED(LED_BLUE);
bikeNomad 0:0944c3654ded 20
bikeNomad 0:0944c3654ded 21 // Analog:
bikeNomad 0:0944c3654ded 22 // GND J3/14
bikeNomad 0:0944c3654ded 23 // VrefH J3/16
bikeNomad 5:5b846ef42702 24 AnalogOut speaker(PTE30); // J10/11
bikeNomad 0:0944c3654ded 25
bikeNomad 5:5b846ef42702 26 // PTD0 D10 - Used for CS of SPI
bikeNomad 5:5b846ef42702 27 // PTD2 D11 - Used for MOSI of SPI
bikeNomad 5:5b846ef42702 28 // PTD3 D12 - Used for MISO of SPI
bikeNomad 0:0944c3654ded 29 // PTC5 J1/9 Used for SCLK of SPI
bikeNomad 0:0944c3654ded 30
bikeNomad 0:0944c3654ded 31 // MOSI, MISO, SCLK, CS, name
bikeNomad 0:0944c3654ded 32 SDFileSystem sd(PTD2, PTD3, PTC5, PTD0, SD_NAME);
bikeNomad 0:0944c3654ded 33 Serial pc(USBTX, USBRX);
bikeNomad 0:0944c3654ded 34
bikeNomad 0:0944c3654ded 35 std::list<Song> songs;
bikeNomad 0:0944c3654ded 36
bikeNomad 0:0944c3654ded 37 int main()
bikeNomad 0:0944c3654ded 38 {
bikeNomad 3:00b4c1aadd30 39 SongPlayer player;
bikeNomad 5:5b846ef42702 40 pc.baud(SERIAL_BAUD);
bikeNomad 6:e90a12ca056f 41 redLED = 1.0;
bikeNomad 6:e90a12ca056f 42 greenLED = 1.0;
bikeNomad 6:e90a12ca056f 43 blueLED = 1.0;
bikeNomad 3:00b4c1aadd30 44
bikeNomad 0:0944c3654ded 45 // read the directory
bikeNomad 0:0944c3654ded 46 DIR *bassDir = opendir(BASS_DIRECTORY);
bikeNomad 5:5b846ef42702 47 if (bassDir)
bikeNomad 5:5b846ef42702 48 {
bikeNomad 5:5b846ef42702 49 while (dirent *dir = bassDir->readdir())
bikeNomad 5:5b846ef42702 50 {
bikeNomad 6:e90a12ca056f 51 char fn[ MAX_FILENAME_LENGTH ];
bikeNomad 4:babc37764bd3 52 snprintf(fn, sizeof(fn), "%s/%s", BASS_DIRECTORY, dir->d_name);
bikeNomad 4:babc37764bd3 53 pc.printf(fn);
bikeNomad 0:0944c3654ded 54 // if this is a valid wave filename
bikeNomad 5:5b846ef42702 55 if (Song::isValidWaveFileName(fn))
bikeNomad 5:5b846ef42702 56 {
bikeNomad 0:0944c3654ded 57 pc.printf("\tvalid\r\n");
bikeNomad 4:babc37764bd3 58 player.playEntireSong(fn);
bikeNomad 3:00b4c1aadd30 59 pc.printf("Song time: %f\r\n", player.timeInSong);
bikeNomad 5:5b846ef42702 60 }
bikeNomad 5:5b846ef42702 61 else
bikeNomad 5:5b846ef42702 62 {
bikeNomad 0:0944c3654ded 63 pc.printf("\tnot valid\r\n");
bikeNomad 0:0944c3654ded 64 }
bikeNomad 0:0944c3654ded 65 }
bikeNomad 5:5b846ef42702 66 }
bikeNomad 5:5b846ef42702 67 else
bikeNomad 5:5b846ef42702 68 {
bikeNomad 0:0944c3654ded 69 pc.printf("Error opening " BASS_DIRECTORY);
bikeNomad 0:0944c3654ded 70 }
bikeNomad 0:0944c3654ded 71 }