Dependencies: SDFileSystem mbed-rtos mbed
Fork of ECE4180Lab4 by
Revision 2:b28eb84aab4f, committed 2017-05-03
- Comitter:
- jasonbx
- Date:
- Wed May 03 07:20:39 2017 +0000
- Parent:
- 1:464ef4e0b4c8
- Commit message:
- added songs;
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 464ef4e0b4c8 -r b28eb84aab4f main.cpp --- a/main.cpp Sun Apr 30 17:11:55 2017 +0000 +++ b/main.cpp Wed May 03 07:20:39 2017 +0000 @@ -1,4 +1,5 @@ #include "mbed.h" +#include "math.h" #include "rtos.h" #include "SDFileSystem.h" #include "SongPlayer.h" @@ -9,7 +10,6 @@ //Serial Debug Serial rfLink(p9, p10); Serial pc(USBTX, USBRX); -SDFileSystem sd(p5, p6, p7, p8, "sd"); //Threads @@ -37,29 +37,84 @@ float duration[18]= {0.48,0.24,0.72,0.48,0.24,0.48,0.24,0.24,0.24, 0.24,0.24,0.24,0.24,0.48,0.24,0.48,0.48, 0.0 }; + +float note2[] = { + 2637.0, 2637.0, 0, 2637.0, + 0, 2093.0, 2637.0, 0, + 3136.0, 0, 0, 0, + 1568.0, 0, 0, 0, + + 2093.0, 0, 0, 1568.0, + 0, 0, 1319.0, 0, + 0, 1760.0, 0, 1976.0, + 0, 1865.0, 1760.0, 0, + + 1568.0, 2637.0, 3136.0, + 3520.0, 0, 2794.0, 3136.0, + 0, 2637.0, 0, 2093.0, + 2349.0, 1976.0, 0, 0, + + 2093.0, 0, 0, 1568.0, + 0, 0, 1319.0, 0, + 0, 1760.0, 0, 1976.0, + 0, 1865.0, 1760.0, 0, + + 1568.0, 2637.0, 3136.0, + 3520.0, 0, 2794.0, 3136.0, + 0, 2637.0, 0, 2093.0, + 2349.0, 1976.0, 0, 0 +}; + +float duration2[] = { + 0.0833, 0.0833, 0.0833, 0.0833, + 0.0833, 0.0833, 0.0833, 0.0833, + 0.0833, 0.0833, 0.0833, 0.0833, + 0.0833, 0.0833, 0.0833, 0.0833, + + 0.0833, 0.0833, 0.0833, 0.0833, + 0.0833, 0.0833, 0.0833, 0.0833, + 0.0833, 0.0833, 0.0833, 0.0833, + 0.0833, 0.0833, 0.0833, 0.0833, + + 0.1111, 0.1111, 0.1111, + 0.0833, 0.0833, 0.0833, 0.0833, + 0.0833, 0.0833, 0.0833, 0.0833, + 0.0833, 0.0833, 0.0833, 0.0833, + + 0.0833, 0.0833, 0.0833, 0.0833, + 0.0833, 0.0833, 0.0833, 0.0833, + 0.0833, 0.0833, 0.0833, 0.0833, + 0.0833, 0.0833, 0.0833, 0.0833, + + 0.1111, 0.1111, 0.1111, + 0.0833, 0.0833, 0.0833, 0.0833, + 0.0833, 0.0833, 0.0833, 0.0833, + 0.0833, 0.0833, 0.0833, 0.0833, 0.0 +}; + +float note3[] = {440.0, 440.0, 440.0, 349.0, 523.0, 440.0, 349.0, 523.0, 440.0, + 0.0, 659.0, 659.0, 659.0, 698.0, 523.0, 415.0, 349.0, 523.0, + 440.0, 0.0}; + +float duration3[] = {0.5, 0.5, 0.5, 0.35, 0.15, 0.5, 0.35, 0.15, 0.65, 0.5, + 0.5, 0.5, 0.5, 0.35, 0.15, 0.5, 0.35, 0.15, 0.65, 0.5, + 0.0}; SongPlayer mySpeaker(p26); void playSound() { //Setup PWM hardware for a Class D style audio output + int songSelect = 0; while (true) { commMutex.lock(); if (commByte == 0x60) { commMutex.unlock(); - mySpeaker.PlaySong(note,duration); - } else if (commByte == 2) { - commMutex.unlock(); - } else if (commByte == 3) { - commMutex.unlock(); - } else if (commByte == 4) { - commMutex.unlock(); - } else if (commByte == 5) { - commMutex.unlock(); - } else if (commByte == 6) { - commMutex.unlock(); - } else if (commByte == 7) { - commMutex.unlock(); - } else if (commByte == 8) { - commMutex.unlock(); + songSelect++; + if (songSelect % 3 == 0) + mySpeaker.PlaySong(note2,duration2); + else if (songSelect % 3 == 1) + mySpeaker.PlaySong(note3,duration3); + else + mySpeaker.PlaySong(note,duration); } else { commMutex.unlock(); Thread::yield(); @@ -67,10 +122,10 @@ } } -void runMotors(float l, float r) { +void runMotors(float l, float r, int wait_time) { left.speed(l); right.speed(r); - Thread::wait(2000); + Thread::wait(wait_time); left.stop(1); right.stop(1); Thread::wait(100); @@ -81,24 +136,28 @@ commMutex.lock(); if (commByte == 0x55) { commMutex.unlock(); - runMotors(0.75, 0.75); - pc.printf("Forward\n\r"); + runMotors(0.75, 0.75, 2000); + //pc.printf("Forward\n\r"); ledup = 1; } else if (commByte == 0x56) { commMutex.unlock(); - runMotors(-0.75, -0.75); - pc.printf("Backward\n\r"); + runMotors(-0.75, -0.75, 2000); + //pc.printf("Backward\n\r"); leddown = 1; } else if (commByte == 0x57) { commMutex.unlock(); - runMotors(-0.75, 0.75); - pc.printf("Left\n\r"); + runMotors(-0.75, 0.75, 500); + //pc.printf("Left\n\r"); ledleft = 1; } else if (commByte == 0x58) { commMutex.unlock(); - runMotors(0.75, -0.75); - pc.printf("Right\n\r"); + runMotors(0.75, -0.75, 500); + //pc.printf("Right\n\r"); ledright = 1; + } else if (commByte == 0x59) { + commMutex.unlock(); + runMotors(1.0, -1.0, 1000); + runMotors(-1.0, 1.0, 1000); } else { commMutex.unlock(); //pc.printf("Stop\n\r");