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

Dependencies:   SDFileSystem mbed BillyBass

main.cpp

Committer:
bikeNomad
Date:
2013-06-15
Revision:
6:e90a12ca056f
Parent:
5:5b846ef42702
Child:
7:ce27f959813b

File content as of revision 6:e90a12ca056f:

#include "billybass.hpp"
#include "song.hpp"
#include "player.hpp"
#include "action.hpp"

// Power:
// Power GND  J9/14
// Vin (6V)   J9/16

// Digital:
DigitalOut tail(PTA13);                // J3/2
DigitalOut mouth(PTC12);               // J3/1
DigitalOut head(PTC13);                // J3/3

DigitalIn pushbutton(PTD5); // J3/4

PwmOut redLED(LED_RED);
PwmOut greenLED(LED_GREEN);
PwmOut blueLED(LED_BLUE);

// Analog:
// GND   J3/14
// VrefH J3/16
AnalogOut speaker(PTE30);              // J10/11

// PTD0 D10 - Used for CS of SPI
// PTD2 D11 - Used for MOSI of SPI
// PTD3 D12 - Used for MISO of SPI
// PTC5 J1/9  Used for SCLK of SPI

//              MOSI, MISO, SCLK, CS, name
SDFileSystem sd(PTD2, PTD3, PTC5, PTD0, SD_NAME);
Serial pc(USBTX, USBRX);

std::list<Song> songs;

int main()
{
    SongPlayer player;
    pc.baud(SERIAL_BAUD);
    redLED = 1.0;
    greenLED = 1.0;
    blueLED = 1.0;

    // read the directory
    DIR *bassDir = opendir(BASS_DIRECTORY);
    if (bassDir)
    {
        while (dirent *dir = bassDir->readdir())
        {
            char fn[ MAX_FILENAME_LENGTH ];
            snprintf(fn, sizeof(fn), "%s/%s", BASS_DIRECTORY, dir->d_name);
            pc.printf(fn);
            // if this is a valid wave filename
            if (Song::isValidWaveFileName(fn))
            {
                pc.printf("\tvalid\r\n");
                player.playEntireSong(fn);
                pc.printf("Song time: %f\r\n", player.timeInSong);
            }
            else
            {
                pc.printf("\tnot valid\r\n");
            }
        }
    }
    else
    {
        pc.printf("Error opening " BASS_DIRECTORY);
    }
}