Arduino alarm clock! Noisy and flashy

I've done quite a few projects lately but this one is what I consider a complete project worth showing on the forum.

I have made an Arduino alarm clock with my own shield "Phi-1" shield. The alarm clock uses a DS1307 real time clock. It displays year, month, date, day of the week, and the time. It has four alarms (more if you change the parameter and recompile).

The alarm settings are stored in Arduino's EEPROM so you don't lose them if you power off arduino.

The RTC also has a battery back up so you keep the time while arduino is not powered. I wish my Phillips alarm clock does that (I hate to change the 9V battery).

Two buttons control the functions:

Button B (if you played classic Nintendo, it's the left button on the pad) sets the alarm. You can choose which alarm to set, what mode to choose, from daily, weekday, weekend, once, or off, an then set the alarm time.

Button A sets the clock. You can set everything in that interface.

Button B or A will stop the alarm

Up and down adjust parameters in setting modes. Parameters cycle through all possible values, like if you push up on December, you get January, or get 59 from 00 if you push down.

If you hold the up or down for a few seconds, they start to repeat. If you hold them for more time, they start to repeat really fast. I was very annoyed by not having that function in some of my clocks at home.

Right arrow in setting mode is the same as button B for enter/confirm.

Things I haven't done yet: 1) Validate date and month (not that important) 2) Add snooze function (well, if you can have infinite alarm clock settings, you may get away not having a snooze) 3) Patiently go through all 3 alarms on a morning. I've recently woke up to my own alarm and just unplug it to avoid the next two alarms. ;D

Here is a video: http://www.youtube.com/watch?v=L-3pKtf1VBE

More information (code and Phi-1 shield) can be found on my blog under the Phi-1 shield update and the alarm clock post (working progress): http://liudr.wordpress.com

Sorry there are a lot of lines of code. I simply took pieces from my other projects and slapped them together. I'm pretty sure someone else has writen buttons class or else but I did mine, just to learn.

I like it I dont think that is a RGB but it may be? Suggestion -put a RGB LED on for effect . They look terrific going off in that type of setting. Plenty of blue and red If u have room for the code of course

Thanks april. The main purpose of my shield is to prototype and the LED spot is for a simple indicator. It is not a tricolor LED. The LED shares space with an RJ11 jack. I would have more space for 3 resistors for a tricolor LED if I didn't have the RJ11 connectors. But they're for commucating or measuring stuff with a secure connection against pull. I was able to sense temperature with a 6-foot telephone cord yesterday with the board that has the RJ11 jack. I guess it's a trade off, whether to make my shield more visually capable or more tech project oriented.