Y comenzaría por encontrar un RTC que si posiblemente tenga alarmas mejor. Así poder configurar la alarma a una hora que uno desee.
Luego crearía una estructura con horas y tiempo de encendido. Y un array de 10 de estas estructuras para navegarlo.
El resto es
Comprobar que el inicio sea por un sleep y no un reinicio. Esto implica luego revisar los horarios cargados en la alarma ( toma de decisiones respecto a si activar horarios pasados y te podes guiar del horario que lleva el RTC + ultima alarma cargada).
Comparar cual se debe activar antes, cargar la nueva alarma, ¿ir a dormir?
¿despertó o detecto la alarma?
- comparar cuales son las que se cumplen (en caso que sean dos) activar el tiempo necesario.
- Cargar la próxima alarma
- La precisión no es tanto en unos segundos, mas en una bomba así que este tiempo lo manejas con tu PIC.
Todo de forma asíncrona, es decir NO a los delays. Manejate con Timers para controlar el tiempo de encendido de las bombas. El Timer siempre corriendo, al detectar la alarma que cargue en una variable el tiempo, y luego el Timer se encarga de activar y desactivar las salidas, si es distinto de 0 activo, cuando llego a 0 desactivado. Solo se va a poner en marcha al cargarle un valor nuevo a este "contador de tiempo" de cada bomba.
Perdon... usualmente programo en C, y veo que esta en el foro de BASIC, por lo que las "estructuras" no es valido, ni tampoco el tema de arrays, pero era para un tema de "organizacion".
Vas a poder hacerlo de otra forma pero en BASIC.
PD: Asi como vas a tener que tener una forma de cargar los horarios, tambien vas a tener que cargar la hora inicial. Asi que la parte de la interfaz es por otro lado e independiente de lo anterior escrito.