ECE3872 HW/SW Project Code
Dependencies: mbed Servo mbed-rtos 4DGL-uLCD-SE PinDetect X_NUCLEO_53L0A1
Diff: main.cpp
- 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(); }