Big Mouth Billy Bass player that takes raw wavefiles and decision list text files from an SD card
Dependencies: SDFileSystem mbed BillyBass
Diff: main.cpp
- Revision:
- 13:c13b3db9649b
- Parent:
- 12:1206e56712d8
- Child:
- 14:79b3fd23c7b5
--- a/main.cpp Tue Jun 18 14:10:40 2013 +0000
+++ b/main.cpp Wed Jun 19 16:12:36 2013 +0000
@@ -4,64 +4,31 @@
#include "player.hpp"
#include "action.hpp"
-// Power:
-// Power GND J9/14
-// Vin (6V) J9/16
+// tailPin, mouthPin, bodyPin inverted
+// BillyBass testBass(LED_RED, LED_GREEN, LED_BLUE, true);
-// tailPin, mouthPin, bodyPin inverted
-BillyBass testBass(LED_RED, LED_GREEN, LED_BLUE, true);
-
-// tailPin, mouthPin, bodyPin
-// J3/2, J3/1, J3/3
-BillyBass realBass(PTA13, PTC12, PTC13);
-
-DigitalIn pushbutton(PTD5); // J3/4
+// tailPin, mouthPin, bodyPin
+BillyBass bass1(BASS1_TAIL, BASS1_MOUTH, BASS1_BODY);
+// tailPin, mouthPin, bodyPin
+BillyBass bass2(BASS2_TAIL, BASS2_MOUTH, BASS2_BODY);
+DigitalIn button1(BASS1_BUTTON); // J3/4
+DigitalIn button2(BASS2_BUTTON); // J3/2
// 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);
-
+// MOSI, MISO, SCLK, CS, name
+SDFileSystem sd(SD_MOSI, SD_MISO, SD_SCLK, SD_CS, SD_NAME);
Serial pc(USBTX, USBRX);
-static void biggestAllocation()
-{
- size_t blksize = 16384;
- char *m;
-
- while (blksize > 0 && (m = (char *)malloc(blksize)) == 0) {
- blksize -= 1024;
- }
-
- char *heaptop = m + blksize;
- fprintf(stderr, "biggest: %u, heaptop: %p, current SP: %p, room: %u\r\n",
- blksize,
- heaptop,
- __current_sp(),
- (char *)__current_sp() - heaptop);
-
- free(m);
-}
-
-static void dumpHeap()
-{
- biggestAllocation();
- __heapstats((__heapprt)fprintf,stderr);
- __heapvalid((__heapprt)fprintf,stderr, 0);
-}
-
int main()
{
SongPlayer player;
pc.baud(SERIAL_BAUD);
+ button1.mode(PullUp);
+ button2.mode(PullUp);
fprintf(stderr, "*** REBOOT ***\r\n");
@@ -77,13 +44,14 @@
while (dirent *d = readdir(bassDir)) {
Song *song = Song::newSong(d->d_name);
if (song) {
- pc.printf("Playing %s\r\n", song->getSampleFileName());
+ fprintf(stderr, "Waiting to play %s\r\n", song->getSampleFileName());
+ while (!(!button1 || !button2))
+ wait(0.1);
player.playEntireSong(song);
- pc.printf("total length: %f done: %u\r\n", player.timeInSong, player.actionsDone);
+ fprintf(stderr, "total length: %f done: %u\r\n", player.timeInSong, player.actionsDone);
}
}
-
closedir(bassDir);
- pc.printf("Done.\r\n");
+ fprintf(stderr, "Done.\r\n");
}
Ned Konz