The digital alarm clock designed in this experiment utilizes a Nucleo-L476RG board [1-2], a DS3231 Real Time Clock Module [3], a buzzer, a 4x4 hard-key keypad, and a UART terminal. The digital alarm clock is organized into a finite state machine consisting of 7 states. The clock features 4 different commands input from the keypad: set the current time/date, set an alarm, display a list of commands, and display the current alarm. Upon connecting to power, the clock and alarm are not set, therefore the initial time and alarm set display incorrect values. This means that upon disconnecting from power, the current time/date and alarms are reset. The initial state of the device is the GET_KEY state. Main source code can be found in the Core folder.
//UART Terminal Screens //Clock Display
![P3ClockDisplay](https://private-user-images.githubusercontent.com/81593806/268745347-27715f1c-f511-4b57-baaf-585072c09082.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM5NzE5NzIsIm5iZiI6MTcyMzk3MTY3MiwicGF0aCI6Ii84MTU5MzgwNi8yNjg3NDUzNDctMjc3MTVmMWMtZjUxMS00YjU3LWJhYWYtNTg1MDcyYzA5MDgyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE4VDA5MDExMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU5MzI1ODg0NDU3MjVlZTY2NmRlZTE5OWMwY2VkMjg0NDhiZTVmYjUxNjBmYjE5NzQ4NGI4MWI5OTMzMzI2ZjcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.S22r6y2AppLrT4WJ98kbFosjGjdz4bBNjmaxwSvPg-0)
//Set Clock Display
![P3SetClockScreen](https://private-user-images.githubusercontent.com/81593806/268745444-747a7e5b-d1e7-4d99-824f-e3844d0d1dad.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM5NzE5NzIsIm5iZiI6MTcyMzk3MTY3MiwicGF0aCI6Ii84MTU5MzgwNi8yNjg3NDU0NDQtNzQ3YTdlNWItZDFlNy00ZDk5LTgyNGYtZTM4NDRkMGQxZGFkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE4VDA5MDExMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTliZDNkN2Y5NWM3NTQ4M2FjM2JjNDc0OGE0MDlmMGVhZjk2NDU4NzI1Yjg4Yjc4ZWEwZDgyNDM2MmVjNDgwMDUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.4n5ZhGwq7IQyQcu4D5zm00diCfImoiXYHUGQvxkKD30)
//Set Alarm Display
![P3AlarmSetScreen](https://private-user-images.githubusercontent.com/81593806/268745541-990ae955-225d-494f-b7ed-822d5a637c51.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM5NzE5NzIsIm5iZiI6MTcyMzk3MTY3MiwicGF0aCI6Ii84MTU5MzgwNi8yNjg3NDU1NDEtOTkwYWU5NTUtMjI1ZC00OTRmLWI3ZWQtODIyZDVhNjM3YzUxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE4VDA5MDExMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTEzYzZkN2Y4YjVmYmMwYzMzMjdhYjNlMzRiNmVjZTg3YjUwZjUxNzI1OTc3ZDQ3MTQ2YTBlZWU4ZmYzZWE0NjYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.DGwHDR1YOWdMprEc1vJSqR3oreGfzp7rMBUh8WR9cpI)
//Commands Display
![P3CMDScreen](https://private-user-images.githubusercontent.com/81593806/268745581-dc2e714f-f840-4bd4-8f34-2e20d305bdb4.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM5NzE5NzIsIm5iZiI6MTcyMzk3MTY3MiwicGF0aCI6Ii84MTU5MzgwNi8yNjg3NDU1ODEtZGMyZTcxNGYtZjg0MC00YmQ0LThmMzQtMmUyMGQzMDViZGI0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE4VDA5MDExMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWFmMTk2MjU1M2MwZDZjMmU4YzAwNTQ4ZDgwY2M0NTM1ZTI2ZDljNDc0Mzk4MWE0ODA0NzAwNmE0ZTRmMjdkMTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.aO9L8lucuefn7Z2yOmUcON760cbuOPaDSo3p2uhJ_Zg)
//Alarm Going Off Display
![P3Alarm](https://private-user-images.githubusercontent.com/81593806/268745751-00e26dce-447e-45ac-bd8a-25ad33524fe2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM5NzE5NzIsIm5iZiI6MTcyMzk3MTY3MiwicGF0aCI6Ii84MTU5MzgwNi8yNjg3NDU3NTEtMDBlMjZkY2UtNDQ3ZS00NWFjLWJkOGEtMjVhZDMzNTI0ZmUyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE4VDA5MDExMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTZlYzhlOTdkOTE1MWIwNzUzNjEyYjNiN2Q0NjQ1MmQ3ZmM3OWIyZGE3NGUzNjAzMjIxYWQ4MmFkNGIwYWMwOGQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.jkGDcc5rYM-Qfsl38BjTK0DF66_A_fvmEVSdxBAYEV8)
//Alarm Display
![P3AlarmDisplay](https://private-user-images.githubusercontent.com/81593806/268745868-069f5196-2a37-4ed5-98b8-c4dffec45a5d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM5NzE5NzIsIm5iZiI6MTcyMzk3MTY3MiwicGF0aCI6Ii84MTU5MzgwNi8yNjg3NDU4NjgtMDY5ZjUxOTYtMmEzNy00ZWQ1LTk4YjgtYzRkZmZlYzQ1YTVkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE4VDA5MDExMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTEyZDk1MGJiOWVmZmY5MjFhZjJjZGQ0ZmY1MTU3YzEyMzI4NDk5ZDY2YjQwMTc0MDZhNzc3NTQ2NDlhODRmNDAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.ysg_eWTZMbL_DlCwp_UNY-WxFAmm5GwWYbcdkpx6U2A)