I have one button for this project, and I keep adding features. How complicated is it going to get?
Here's the UI that I have now, and it seems to work pretty well:
- On power cycle, it will increment the mode. This is an easy way to remotely switch through different modes and keep them all in sync. If the user wants to keep the same mode all the time, they should leave it on. Alternatively, if this is used in a scenario where it is turned on once daily, the user can just spend a few seconds cycling around until it gets to the mode they want.
- The button on the strip itself will increment the mode if pressed briefly. This allows the user to re-synchronize the strips if somehow they get out of sync. It increments on release.
- If the button is held for 2 seconds, it goes into brightness adjust. The lights will all turn white, and every two seconds the brightness of the lights will increment. This will continue until the user releases the button. This brightness level is saved in the EEPROM. When the button is released the LEDs are no longer white and the strip resumes the mode it was in before the brightness was adjusted.
That seems to be pretty good for a single button. My hope is that when the user is installing the strip they'll be able to set up the lights with the brightness they want and make sure the modes are all synchronized. Then when the installation is complete and they may not have access to the strips, they can still adjust the mode by cycling the power.