4. done, you now have a rate repeat on the minute and hour selections.5. added a total of 10 patterns, each much shorter than the original one, reused some and added others. Every hour a random special effect will be chosen and played.6. didn't touch this.Do give it some thorough testing!
Fixing the music part (at least I hope it's fixed) was a single line of code, no big deal.For the other music - I guess it's a matter of plugging it in, but have to see, also how to include the button interruption part in it. That's probably the hardest part.
Fixed that (I think - didn't really check on it).Got the address, value order mixed up again in EEPROM.write.How would the alarm lights have to follow the music exactly?
Music stripped. Alarm changed (it's now merged with the special effects function, after all that's what it is).Supposed working of the alarm (haven't had time to test it at all):Upon alarm time:- five half-second beeps (the same 1900 Hz as used for the button bips) with half-second silence. All LEDs ON while beep sounds, normal clock display in between.- five seconds pause- this repeats for up to 20 minutes after which it switches off the alarm, unless user presses the alarm button.Short press: snooze mode.Clock display remains on (even if the lights switch is set to OFF). You have to wake up so good to see the time.Then after five minutes the alarm restarts as above.Long press: alarm off (no more snooze). Display will follow the lights on/off switch again.Hourly effects are not played if the alarm plays. No delaying of that, the code doesn't even allow for this. Hourly effects are triggered when the second is 0, just like the alarm, but the alarm is checked for first. So unless you manage to switch off the alarm within that first second the hourly effects don't play at all.As it's set to be special effect, this of course can quite easily be changed.
1) have to look into this one. Probably a simple error somewhere. I don't see it right now, this one is for tomorrow.2, 3) done.4) fixed: set the seconds to 1 instead of 0 when setting the time, as the alarm only plays when seconds == 0, so you're basically setting the clock past the alarm time. There's no seconds display so that doesn't matter.5) Added an additional 500 ms delay here. Indeed it will start advancing the minutes right away.6) So keep that to a 5-second pause? It's easy to change - after all it's implemented as a special effect.