![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
ECE3872 HW/SW Project Code
Dependencies: mbed Servo mbed-rtos 4DGL-uLCD-SE PinDetect X_NUCLEO_53L0A1
Diff: main.cpp
- Revision:
- 7:f5f265b139fe
- Parent:
- 5:d34d14d33a89
diff -r d34d14d33a89 -r f5f265b139fe main.cpp --- a/main.cpp Sat Apr 04 23:49:24 2020 +0000 +++ b/main.cpp Tue Apr 07 16:06:39 2020 +0000 @@ -3,7 +3,7 @@ #include "audio_out.h" #include "PinDetect.h" #include "uLCD_4DGL.h" -DigitalOut myled(LED1); +DigitalOut myled1(LED1); DigitalOut myled2(LED2); DigitalOut myled3(LED3); DigitalOut myled4(LED4); // LCD init uLCD_4DGL guLCD(p28, p27, p29); // serial tx, serial rx, reset pin; // Push buttons init @@ -12,11 +12,7 @@ PinDetect pb3(p18); PinDetect pb4(p19); // States -#define sRESET 1 -#define sSTOP 2 -#define sRECORD 3 -#define sPLAY 4 -#define sERASE 5 + // State Machine control global variables bool X; //reset bool P; //play @@ -72,54 +68,71 @@ */ } + +void pb1_hit_callback (void) +{ + guLCD.printf("REEST"); + X = 1; +} + +void pb2_hit_callback (void) +{ + guLCD.printf("STOP"); + P = 1; +} + +void pb3_hit_callback (void) +{ + guLCD.printf("RECORD"); + S = 1; +} + +void pb4_hit_callback (void) +{ + guLCD.printf("PLAY"); + R = 1; +} + void hardware_init(){ // Push buttons init pb1.mode(PullUp); pb2.mode(PullUp); pb3.mode(PullUp); pb4.mode(PullUp); + // Delay for initial pullup to take effect + wait(.01); pb1.attach_deasserted(&pb1_hit_callback); pb2.attach_deasserted(&pb2_hit_callback); pb3.attach_deasserted(&pb3_hit_callback); pb4.attach_deasserted(&pb4_hit_callback); + + guLCD.display_control(LANDSCAPE); + guLCD.background_color(BLACK); + guLCD.cls(); + guLCD.baudrate(BAUD_1000000); //jack up baud rate to max for fast display + wait(1.0); pb1.setSampleFrequency(); pb2.setSampleFrequency(); pb3.setSampleFrequency(); pb4.setSampleFrequency(); } - -void pb1_hit_callback (void) -{ - myled1 = !myled1; - guLCD.printf("REEST"); -} - -void pb2_hit_callback (void) -{ - myled2 = !myled2; - guLCD.printf("STOP"); -} - -void pb3_hit_callback (void) -{ - myled3 = !myled3; - guLCD.printf("RECORD"); -} - -void pb4_hit_callback (void) -{ - myled4 = !myled4; - guLCD.printf("PLAY"); -} - void state_machine_mgr(){ sm_state curr_state = sRESET; + X = !X; while(1) { switch(curr_state){ case sRESET: + S = 0; + R = 0; + E = 0; + P = 0; if(S) curr_state = sSTOP; break; case sSTOP: + X = 0; + R = 0; + E = 0; + P = 0; if(X){ curr_state = sRESET; }else if(S&R){ @@ -129,6 +142,10 @@ } break; case sRECORD: + S = 0; + X = 0; + E = 0; + P = 0; if(X){ curr_state = sRESET; }else if(R&S){ @@ -138,6 +155,10 @@ } break; case sPLAY: + S = 0; + R = 0; + E = 0; + X = 0; if(X){ curr_state = sRESET; }else if(P&S){