I bought some LED flashlights awhile back, and it turns out they are pretty annoying! This brand of flashlight has 3 settings it cycles through then you push the button. 1st push is "bright" 2nd is "brighter", and 3rd is this strobe effect that is really annoying but would be great for say, flagging down the space shuttle from orbit. It also has this feature that maintains brightness until the battery goes dead, rather than dimming. That sounds great, but often you have no clue that the battery is about to cut out.
So I took it apart and discovered they are using a small AVR processor to control it. The photo above is of the controller board. They are using PWM to control the brightness. I thought maybe they had some kind of little switching power supply in there, but it’s simpler than that. That is, if you consider using a microcontroller to control a flashlight "simpler".
So I’m going to reverse engineer it and write some new code for it. I can think of a lot of cool things one could do. One useful thing would be to just make it turn on and off with the button rather than be forced to push the button a minimum of 4 times to turn it on and back off!