Event Driven State Machine Lab
BME554L - Spring 2026 - Palmeri
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
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.
For PlantUML-generated digrams, if the diagram’s layout is difficult to follow using the automated layout, consider manually specifying relative positions and length of arrows using the following annotation: https://crashedmind.github.io/PlantUMLHitchhikersGuide/layout/layout.html#:~:text=6.,Tip.
Gradescope
Upload your rendered state diagram to the associated Gradescope assignment.