Dependencies:   SDFileSystem mbed-rtos mbed

Fork of ECE4180Lab4 by Frank Zhou

Files at this revision

API Documentation at this revision

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");