Problema extraño con TimeAlarms

Hola
Como siempre, un placer leerte Surbyte.

No, las alarmas no son dinámicas, están en una función aparte pero la llama desde el setup. Estaban directamente en el setup pero pasa exactamente igual.

Sólo hay 4 alarmas, pero pasa lo mismo si solo dejo una de la hora a la que no salta. Por lo que descarto la problema con tamaño de SRAM.

Investigando un poco, puede que cuando hace el Alarm.delay(x) se salte la lectura de que la alarma tiene que saltar. Por ejemplo si tiene se saltar a las 9:19:00, puede que al leer el reloj lo presente en la pantalla correctamente pero empiecee a leer una milesima de segundo despues y entonces ya lo toma como 9:19:01 y no capture el momento exacto. Porque si no he visto mal la hora es un unsigned long con toda la información de la fecha y la hora. Pero tambien se me hace raro pues he llegado a poner un Alarm.delay(1500); y tampoco funciona.

He puesto tambien un Alarm.delay(1000) antes de presentar el reloj y otro después, entonces hace cosas raras, salta 2 segundos, va bien, vuelve a saltar un segundo pero rápidamente, vuelve a saltar otros 2... pero no salta ninguna alarma.

Y por descontado esto me retrasa el resto del programa y hace que no funcione del todo bien, como por ejemplo el botón de activación/desactivación de las alarmas, botones de ajuste del reloj, etc.

El código es largo, y en varios archivos, por eso lo subo en un zip. Está un poco caótico porque estoy con pruebas.

Voy a investigar si hay alternativa.

Muchas gracias

Programador.zip (5.64 KB)