ECE3872 HW/SW Project Code

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

Files at this revision

API Documentation at this revision

Comitter:
trmontgomery
Date:
Sat Apr 11 16:43:11 2020 +0000
Parent:
22:fd48dd707e4f
Commit message:
pulled nicks stuff

Changed in this revision

Speakerout2.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/Speakerout2.h	Sat Apr 11 16:40:50 2020 +0000
+++ b/Speakerout2.h	Sat Apr 11 16:43:11 2020 +0000
@@ -1,6 +1,5 @@
 #include "mbed.h"
 #include "Speaker.h"
-#include <vector>
 
 Serial pc(USBTX,USBRX);
 Speaker mySpeaker(p26);
@@ -9,11 +8,10 @@
 float freq [30];
 float freq2;
 
-void record() { 
-    while(1){
+float *record(float freq1[30]) {
+    for(int i = 0; i<30; i++){
         pc.printf("Please enter note\n");
         note = pc.getc();
-        pc.printf("Note: %c", note);
         switch (note){
             case 'a':
                 freq2 = 523.25;
@@ -63,8 +61,15 @@
                 freq2 = 987.77;
                 break;
             }
-            mySpeaker.PlayNote(freq2,1.0,0.1);
-            wait(1);
+            freq1[i] = freq2;
         }
-        
-    }
\ No newline at end of file
+    return freq1;
+    }
+
+
+int main() {
+    record(freq);
+    for (int i = 0; i<30; i++){
+        mySpeaker.PlayNote(freq[i],1.0,0.1);
+    }
+}
--- a/main.cpp	Sat Apr 11 16:40:50 2020 +0000
+++ b/main.cpp	Sat Apr 11 16:43:11 2020 +0000
@@ -1,19 +1,11 @@
 #include "mbed.h"
 #include <iostream>
-#include "Speakerout2.h"
+#include "audio_out.h"
 #include "PinDetect.h"
 #include "uLCD_4DGL.h"
-DigitalOut myled1(LED1);
-DigitalOut myled2(LED1);
-DigitalOut myled3(LED1);
-DigitalOut myled4(LED1);
-// LCD init
-uLCD_4DGL guLCD(p28, p27, p29); // serial tx, serial rx, reset pin;
-// Push buttons init
-PinDetect pb1(p16); 
-PinDetect pb2(p17);  
-PinDetect pb3(p18); 
-PinDetect pb4(p19); 
+DigitalOut myled(LED1);
+//Serial mac(USBTX,USBRX);
+
 // States 
 #define sRESET 1
 #define sSTOP 2
@@ -29,7 +21,6 @@
 
 
 
-
 void reset(){ 
     /* reset state:
         Initial state upon powering up the device
@@ -50,7 +41,7 @@
         3. Mute all audio
     */
 }
-//void record(){
+void record(){
     /* record state:
         Initiated by rotary switch
         1. Cease all motion
@@ -59,7 +50,7 @@
         4. Append to list of frequencies
         5. 
     */
-//}
+}
 void play(){
     /* play state:
         Initiated by rotary switch
@@ -75,50 +66,95 @@
     */
 }
 
+
+
+
 void state_machine_mgr(){
-    int curr_state =  sRESET;
+    pc.printf("SM\n");
+    char curr_state =  1;
+    X = 1;
+    S = 0;
+    R = 0;
+    P = 0;
+    E = 0;
     while(1) {
+        if (pc.readable()) {                // if they have pressed a key
+            curr_state = pc.getc();
+            if('1') X=!X;   //toggle reset
+            if('2') S=!S;   //toggle stop
+            if('3') R=!R;   //toogle record
+            if('4') P=!P;   //toggle play
+            if('5') E=!E;   //toggle erase
+        }
+        
+        // Implementing state machine logical transitions based on what states can exit to other states
+        if(X){
+            if(E){
+                curr_state = 5;
+                X = !X;
+            }else if(S){
+                curr_state = 2;
+                X = !X;
+            }
+        }else if(S){
+            if(X){
+                curr_state = 1;
+                S = !S;
+            }else if(R){
+                curr_state = 3;
+                S = !S;
+            }else if(P){
+                curr_state = 4;
+                S = !S;
+            }
+        }else if(R){
+            if(X){
+                curr_state = 1;
+                R = !R;
+            }else if(S){
+                curr_state = 2;
+                R = !R;
+            }
+        }else if(P){
+            if(X){
+                curr_state = 1;
+                P = !P;
+            }else if(S){
+                curr_state = 2;
+                P = !P;
+            }
+        }else if(E){
+            if(X){
+                curr_state = 1;
+                E = !E;
+            }
+        }
         switch(curr_state){
-            case sRESET:
-                if(S) curr_state = sSTOP;
-                break;
-            case sSTOP:
-                if(X){
-                    curr_state = sRESET;
-                }else if(S&R){
-                    curr_state = sRECORD;
-                }else if(S&P){
-                    curr_state = sPLAY;
-                }
+            case 1:
+                pc.printf("RESET\n");
+                reset();
                 break;
-            case sRECORD:
-                if(X){
-                    curr_state = sRESET;
-                }else if(R&S){
-                    curr_state = sSTOP;
-                }else if(R&P){
-                    curr_state = sPLAY;
-                }
+            case 2:
+                pc.printf("STOP\n");
+                stop();
+                break;
+            case 3:
+                pc.printf("RECORD\n");
+                record();
                 break;
-            case sPLAY:
-                if(X){
-                    curr_state = sRESET;
-                }else if(P&S){
-                    curr_state = sSTOP;
-                }else if(P&R){
-                    curr_state = sPLAY;
-                }
+            case 4:
+                pc.printf("PLAY\n");
+                play();
                 break;
-            case sERASE:
-                if(X){
-                    curr_state = sRESET;
-                }
+            case 5:
+                pc.printf("ERASE\n");
+                erase();
+                break;
         }
     }
 }
 
 int main() {
-    //hardware_init();
-    //state_machine_mgr();
-    record();
+    pc.printf("MAIN\n");
+    state_machine_mgr();
 }