Event Driven State Machine Lab
BME554L - Fall 2025 - Palmeri
Lab
Tip
I would recommend doing this with pencil and paper first, not immediately jumping into a tool. Err on the side of more detail than not.
Digital Kitchen Timer
Generate a state diagram for a simple digital kitchen timer that has the following buttons:
Start/StopButtonResetButtonPauseButtonUp/Down/Left/RightArrow Buttons (4)
The timer outputs time intervals in the format: HH:MM:SS
Functional States
- The kitchen timer has an “Idle” state when it isn’t actively counting down time. In this state:
- The
Up/Downbuttons increment the time for theHH,MMorSSvalues. - The
Left/Rightbuttons let you move betweenHH,MMandSS. - Time intervals will wrap around to
00when a reasonable max value is exceeded. - The
Resetbutton sets all of the time values to00. - The
Pausebutton is inactive.
- The
Start/Stopwill start the timer countdown when inIdle.- In the
Countdownstate:- The
Start/Stopbutton will stop and reset the countdown interval. - The
Pausebutton will pause, but not reset, the countdown time.
- The
- When the countdown is done, the timer enters an
Alarmstate, where:- The
Up/Down/Right/Leftarrow buttons,ResetandPausebuttons are inactive. Start/Stopwill stop the alarm and return the timer toIdlewith the previously set countdown time.
- The
Tip
If any functional state expectation isn’t explicitly described above, please implement something reasonable.
Make sure that your state diagram:
- Has initialization (i.e., batteries put in) and termination (i.e., completely powered off) dots.
- Includes all functional states, including (but not limited to):
IdleCountdownPausedAlarm
- Consider if states should have entry and exit actions.
- Make sure all transitions between states are annotated with associated triggering events.
Generate the State Diagram
Formally render your state diagram using one of the tools outlined on the State Diagram Tools page.
Gradescope
Upload your rendered state diagram to the associated Gradescope assignment.