ECE3872 HW/SW Project Code

Dependencies:   mbed Servo mbed-rtos 4DGL-uLCD-SE PinDetect X_NUCLEO_53L0A1

Revision:
26:2063ee8419cc
Parent:
25:7764baddb7bc
--- a/main.cpp	Mon Apr 13 21:32:00 2020 +0000
+++ b/main.cpp	Tue Apr 14 01:40:26 2020 +0000
@@ -3,6 +3,7 @@
 #include <vector>
 #include "speaker_out.h"
 #include "motor_ctl.h"
+#include "SongPlayer.h"
 
 DigitalOut myled1(LED1);
 DigitalOut myled2(LED2);
@@ -17,10 +18,18 @@
 bool E;     //erase
 
 enum sm_state {sRESET, sSTOP, sRECORD, sPLAY, sERASE};
+int curr_state = 1; 
+
+Serial pc(USBTX,USBRX);
+Speaker mySpeaker(p26);
+float time_limit = 30;
+//Timer t; 
 
 //SongPlayer music; 
 //Puppet puppet;
 vector<float> song; //stores all notes recorded by user
+vector<string> dance; 
+
 
 void reset(){ 
     /* reset state:
@@ -56,7 +65,79 @@
         4. Append to list of frequencies
         5. 
     */
-    //music.record(); //need to play as recording happens
+    float freq; 
+    char note; 
+    t.start();
+    while(t.read() < 30){
+        note = pc.getc();
+        switch (note){
+            case 'a':
+                freq = 523.25;
+                dance.push_back(move_map[0]);
+                break;
+            
+            case 's':
+                freq = 554.37;
+                dance.push_back(move_map[1]);
+                break;
+            
+            case 'd':
+                freq = 587.33;
+                dance.push_back(move_map[2]);
+                break;
+            
+            case 'f':
+                freq = 622.25;
+                dance.push_back(move_map[3]);
+                break;
+            
+            case 'g':
+                freq = 659.26;
+                dance.push_back(move_map[4]);
+                break;
+            
+            case 'h':
+                freq = 698.46;
+                dance.push_back(move_map[5]);
+                break;
+            
+            case 'j':
+                freq = 739.99;
+                dance.push_back(move_map[6]);
+                break;
+            
+            case 'k':
+                freq = 783.99;
+                dance.push_back(move_map[7]);
+                break;
+            
+            case 'l':
+                freq = 830.61;
+                dance.push_back(move_map[8]);
+                break;
+            
+            case 'q':
+                freq = 880.00;
+                dance.push_back(move_map[9]);
+                break;
+            
+            case 'w':
+                freq = 932.33;
+                dance.push_back(move_map[10]);
+                break;
+            
+            case 'e':
+                freq = 987.77;
+                dance.push_back(move_map[11]);
+                break;
+            }
+            song.push_back(freq);
+            mySpeaker.PlayNote(freq,0.2,0.5);
+            
+        }
+        t.stop();
+        //curr_state = 3; 
+
 }
 void play(){
     /* play state:
@@ -66,8 +147,8 @@
             - moving servo motors accordingly
             - playing corresponding sounds
     */
-    //puppet.dance();
-    //music.play();
+    SongPlayer mySpeaker(p26, song);
+    mySpeaker.PlaySong(DUR);
 }
 void erase(){
     /* erase state:
@@ -77,7 +158,7 @@
 }
 
 void state_machine_mgr(){
-    char curr_state =  1;
+    
     char key_input;
     X = 1;
     S = 0;
@@ -170,6 +251,20 @@
 }
 
 int main() {
-    //state_machine_mgr();
-    puppet_move();
+    //initialize map of freq to movements
+    move_map.push_back("1111");
+    move_map.push_back("1011");
+    move_map.push_back("0111");
+    move_map.push_back("1122");
+    move_map.push_back("1022");
+    move_map.push_back("0122");
+    move_map.push_back("1133");
+    move_map.push_back("1033");
+    move_map.push_back("0133");
+    move_map.push_back("0031");
+    move_map.push_back("0013");
+    move_map.push_back("1101");
+    state_machine_mgr();
+    //puppet_move();
+    //record();
 }