For 2012 I'm aiming to complete a project every month Project-A-Month | Flickr. I often wonder how much time I spend working on a particular project (like the KENBAK-uino) so for March I decided to make a simple device to track elapsed time.
Pr0JCL0C is a single proto-shield:
- two buttons (to keep the component count down I used the Arduino's internal pullup resistors)
- 4-digit 7-segment display
- piezo buzzer
- DS1307 RTC (on a ribbon cable to fit inside my enclosure)
Pr0JCL0C - Front by funnypolynomial, on Flickr
Pr0JCL0C - Back by funnypolynomial, on Flickr
I used TimerOne to provide an interrupt which services the 7-segment display.
Originally I planned to squeeze everything onto the one board, including the RTC, so I was going to dispense with the battery backup. Because of that I implemented a simple "wear levelling" class to save the total elapsed hours (rather than using the DS1307's battery-backed RAM). The wear levelling class spreads successive EEPROM writes across the available memory, maximizing its lifetime.
Pr0JCL0C - Project Clock by funnypolynomial, on Flickr
When I sit down to do some work on my current project I hit the Green button. The display is animated while timing to make me less likely to forget to hit the Red button when I'm done. It issues a brief buzz every 30 minutes while accumulating the current subtotal in minutes. Hitting Red adds that to the grand total in decimal hours. Hiting Red when not timing displays the current totals.
There are more photos and details on flickr:Pr0JCL0C | Flickr
The sketch is available from my site:Mark Wilson's Home Page - Software/Arduino/Pr0JCL0C
Turns out I've spent 37.2 hours on the April project (which is nearly done! The RS232-shifter I make in the video was no help :()