-Sunrise Alarm capability: slowly turning on a light over the course of about 20 minutes before audio alarm sounds.
I built something like that about a million years ago with another microcontroler. It still works great! I built my own dimmer with a TRIAC and a TRIAC-driver opto-isolator. But I took a shortcut, and did not include a real-time clock. It plugs-into an external AC timer-switch (X-10
* controlled). My dim-up time is 10 minutes.
Prior to this, I had built an alarm clock with a switched AC outlet (from an all-in-one) clock/display module. But as best I remember, the sunrise simulator has always run off an X-10 module.
And, since I hate waking-up... I built another little box that plugs-into the same AC timer. It turns-on and does nothing for 10 minutes. After the lamp is at full-brightness, it makes a little-gentle "beep". 30 seconds, it makes another "beep". It beeps every 30 seconds and it counts the minutes, so after 3 minutes I get a "beep-beep-beep" (3 beeps again at 3:30). I think it counts up to 15 minutes and then shuts off.
Of course I could have built both of these functions into one box with one microcontroller, but I had never made a digitally controlled dimmer before and I wanted to keep the projects as simple as possible, even if I had to buy twice as much hardware.
If I were starting-over today, I'd do both functions with one microcontroller, but I'd probably still avoid the real-time clock and I wouldn't build my own radio. To me, it's not worth putting hours-and-hours into building stuff that I can buy rather cheaply.
* With some of the newer X1-10 or X1-10 compatible modules, I believe you can program them to dim-up slowely, or dim-up in steps over a period of time. In that case, you wouldn't need to build anything! The older modules would always turn-on to 100% and then dim-down to the command setting.