To take advantage of the porch area of my house I moved the front door forward. To do that I had to make up a new frame and the opening for the frame was much bigger then the door. In order to allow as much light into the house as possible, this extra space above the door was made into a window. To make it more interesting the house number was engraved into it. Suddenly I thought about it being engraved. If glass (or clear plastic) is engraved and you shine a light down the edge you end up with something called total internal reflection within the un-etched area. As soon as the light hits the etched area it spills out and appears to light up. Check out Wikipedia for the science!
The idea was to have the light be able to come on at dusk and go off at around midnight. The weapon of choice for this is the Arduino. Using that it can measure the light levels and switch on when it hits a predetermined level. To work out the time that it should then be on for I could have used some form of clock, but that would need setting and I didn't want a display on it. So the Arduino notes the its run time that the light level dropped at and the time the light level returned above it. From that it halves the figure which gives (approximately) midnight. I say approximate, it depends on a few things (daylight saving etc) but it works for the roughness of this purpose and it is effectively self learning. No matter the time of year it will always know how long the previous night was and adjust accordingly.
Step 1: Circuit
The second is a simple resistor potential divider of 8.2K and 2K these monitor the battery voltage and are able to warn when it gets too low by dimming the output to a lower level and if the battery is too low then stopping the light coming on at all. Eventually I will update the circuit to have a second indicator LED to warn of low power situations.
Powering the circuit is a 12V 7AH lead acid battery and a 4W solar panel, this is why there is the voltage monitor in it to prevent the light draining the battery too much.
Step 2: Program
Step 3: Other Uses
Any other suggestions and I'll put them up here!