Part List:
- Arduino
- Real Time Clock Module (http://www.sparkfun.com/products/99)
- 24xAssorted LEDs (In my case: 3UV, 2 Blue, 4 Red, 3 Yellow, 12 White)
- 24xResistors, 220ohm
- Solderless Breadboard
- Assorted wires
- 3x74HC595 shift registers
- A Shadow Display Box
- Frosting Spray
To put this thing together I used Elco's ShiftPWM Library to control the 24 LEDs. You could go bigger, but I wanted this to all fit into the box.
Personally, I had some PCBs from a previous project that I could fashion to make the LEDs easier to mount.
Everything is hooked up like in the schematic:
The "To SCL" and "To SDA" lines go to the Real Time Clock Module.
Load the program below in and you can set the time on the clock with the following command in serial monitor:
T(00-59)(00-59)(00-23)(1-7)(01-31)(01-12)(00-99)
T(sec)(min)(hour)(dayOfWeek)(dayOfMonth)(month)(year)
You can then set the alarm with a command:
A(00-59)(00-23)(0-1)(0-1)(0-1)(0-1)(0-1)(0-1)(0-1)
A(min)(hour)(sun)(mon)(tue)(wed)(the)(fri)(sat)
The alarm will attempt to be done with the cycle at the appropriate time set, so it will start with the UV LEDs and move through the progression fading the LEDs in and out as indicated in the arrays at the top of the program.
Frost both sides of the glass for good distribution of light, then cut away the side of the box so that you can power the Arduino with it mounted inside the box.
This is a very sped up version of the alarm sequence looks like this... the lights at the beginning are part of the power up sequence of the Arduino.
Funny, my digikey order for a similar project should get here tomorrow. I'm making an AC dimmer that adapts our reading light into a sunrise alarm. If the project goes well, I will make one that fits in a wall switch box for the overhead light.
ReplyDeletewhat length of time is the final sequence?
You can set the final sequence time in the code, I picked a minute per LED, so 24 minutes. I figured I'd leave it easily adjustable, so if you look at "alarm_duration" that's the number of minutes it will take. It then does some math to figure out the number of millis between brightness changes. In the video I hardcoded to 1 milli between brightness stage... so 255 millis per led.
ReplyDeleteThe sequence I used goes something like +UV, +blue, +red, -blue, +yellow, -red, +white. Which gives you a color shift and gradual brightening that seems to work pretty well.
We've used it most of this week and it seems to at least get you started before the clock radio kicks on ;)
Oh, I'm also writing a little UI app to allow you to plug the USB into a computer and set the time/alarm without having to type in the secret codes ;) I'll attach that when it's done as well.
ReplyDeleteYou guys should get one of these for the final stage of the alarm while they are on sale: http://www.goldmine-elec-products.com/prodinfo.asp?number=G18538
ReplyDeleteI know this is years later, but I was trying to make this (it seems awesome!) after constructing everything on a breadboard I've run into a bit of a snag. My lights will light up if I use the ShiftPWM examples, and while my clock will keep the time and store an alarm, the alarm itself (lights and stuff) won't go off at the set time.
ReplyDeleteMy guess is that because you made the code before arduino went all 1.0 and changed some of their libraries, it's having some trouble. If you're still around and could give me some clues on how to update your code to match the new libraries, that would be sweet.