Start putting together a plan for your final project. Given the chapter, the main goal is to put together state machine documentation. This can be a flowchart or (preferably) a state table. You may also need to create the diagrams from Lesson 2 to flesh out the design. Note: this design planning, thinking through the system, what you have and what you need. Keep in mind that these will not be the final version!
This final project is a Pomodoro timer. It consists of a triangular-shaped digital desktop timer that has some allowances for using the pomodoro technique. The timer is orientation sensitive, allowing you to select a duration. Using the accelerometer, the timer knows if you've selected a Pomodoro (25 minutes), a short break (5 minutes), or a long break (15 minutes). These correspond to the chunks of time used by the technique.
The technique, briefly:
- Start a 25 minute timer. During this time focus entirely on the task at hand. Postpone any interruptions until the timer has expired.
- Take a short, 5 minute break.
- Repeat 1 & 2 three more times.
- After the fourth pomodoro, take a longer break (15 minutes).
- Repeat 1 through 4 as needed to accomplish your tasks.
The timer will keep track of the total number of pomodoros that you've accomplished. There is a reset button to clear the accumulated count of pomodoros. Good work today!
Features/techniques used:
- LCD matrix display
- Custom graphics
- PWM buzzer
- Accelerometer
- System timers
TODO
State | Event | Next | State var: pomodoros |
---|---|---|---|
START | (NONE) | SHOW_STATS | pomodoros = 0 |
SHOW_STATS | orientation: pomodoro | TIMING_POMODORO | |
SHOW_STATS | orientation: short break | TIMING_SHORT_BREAK | |
SHOW_STATS | orientation: long break | TIMING_LONG_BREAK | |
TIMING_POMODORO | timeout (25 min) | SHOW_STATS | pomodoros++ |
TIMING_SHORT_BREAK | timeout (5 min) | SHOW_STATS | |
TIMING_LONG_BREAK | timeout (15 min) | SHOW_STATS | |
TIMING_LONG_BREAK | timeout (15 min) | SHOW_STATS | |
(ANY) | reset button | SHOW_STATS | pomodoros = 0 |