La versión de CAO para solo un canal (DIMMER1C) conserva el interfaz del LCD, la botonera, el zumbador y el RTC Este último es el que sirve para que el dimmer se acople a un horario.
El acuario debe de ser capaz de funcionar en tu ausencia, por eso el RTC, para poder poner en hora el RTC y hacer algún ajuste más hace falta algo que permita un humano hacer los ajustes para que el sistema se comporte como uno quiera.
Evidentemente si recurres a un PC para modificar el programa cada vez que quieres cambiar el comportamiento del sistema, no vas a poder dejarlo funcionando correctamente en tu ausencia. Es evidente que puedes optar por otras soluciones, pero los acuarios necesitan un horario. Para eso necesitas un RTC, para el RTC necesitas otras partes para poder ponerlo en hora, etc.
No me parece mal que empieces haciendo funcionar un sistema muy simplificado, pero terminarás pidiendo más cosas a tu Arduino y probablemente empezarás a poner parches y la estructura de tu programa finalmente se resentirá. Puedes pensar que no necesitas más de lo que tienes pensado, pero esas apreciaciones suelen quedarse cortas con el tiempo.
Lo de separar funciones en varios Arduinos diferentes también se puede hacer, pero vas a tener que recurrir a actualizar el código a cada cambio que desees hacer en cada uno de ellos. Yo no descarto que CAO en un futuro sea capaz de funcionar distribuyendo el trabajo entre varios Arduinos, pero me gustaría que existiera una forma de control centralizado sobre todo el sistema aunque sea un sistema distribuido y eso no es un asunto trivial.
Tu planteamiento yo lo veo como la clásica tentación de hacer cosas muy sencillitas que funcionarán en seguida con muy poco trabajo, y hasta cierto punto es lógico. Normalmente yo hago eso mismo cuando estoy probando hardware nuevo. Incluso la inmensa mayoría del código que he visto publicado para Arduino entra en esa categoría. Te muestran como se usa un dispositivo con un ejemplo lo más simple posible. Es lo correcto en estos casos, pero la aplicación de ta tienes que montar tú con el nivel de sofisticación que necesites y eso requiere un enfoque y una metodología de trabajo muy diferente en la cual uno no va simplemente añadiendo lineas de programa a medida que cree que lo necesita sino que se parte de un analisis completo usando una metodología orientada a objeto que facilite su mantenimiento. Sin eso cualquier mejora de la aplicación corre el riesgo de destabilizarla completamente.
La cantidad de código que yo he empleado supone una inversión de tiempo muy considerable, pero ha de considerarse una inversión rentable a más largo plazo porque luego el sistema ahorrará mucho tiempo y trabajo al usuario y a otros programadores. Para hacerlo de forma rentable y eficiente ha de hacerse con una metodología de trabajo que implica tener como mínimo algunos conocimientos de ingeniería del software. Esto se adquiere en cualquier carrera de informática, pero no en otro tipo de carreras técnicas. Generalmente no basta leerse un buen libro para aprender estas metodologías. Es algo que se ha de acompañar con la práctica. Todo esto son cosas que estudié, practiqué, y afortunadamente no olvidé.
Estoy hablando en exceso de mí. Perdón por la parrafadada.
Sea cual sea tu planteamiento, yo te voy a ayudar, faltaría más. La magia de la progresividad en el dimeo reside en una función de apenas 5 líneas. Si solo necesitas eso te basta usar la función siguiente.
int Conv_Led_PWM_Exp2(int i)
Mira en el código como se usa y si tienes alguna duda me lo comentas.