Shadow Chassis Robot Receiver Program
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 |
--- 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");
