Hacer dos o más secuencias de tiempo en Void Loop

Un saludo a todos/as. Tengo la necesidad de hacer en mi proyecto dos secuencias (o más) de tiempo por separado y no sé como hacerlo. Os expongo a continuación un ejemplo fácil de encendido del pin 13. (Solo escribo el void loop).

void loop()
{
digitalWrite(13,HIGH);

delay(5000);
digitalWrite(13,LOW);
delay(5000);
}

Quiero hacer esto mismo, pero por ejemplo encendiendo además del pin 13 cada 5 segundos, encender el pin 14 cada 10 segundos por separado e independiente uno de otro.

Quiero hacer esto mismo, pero tambien, ejemplo:

  • Cada 5 segundos encender / apagar el pin 13.
  • Cada 10 segundos encender / apagar el pin 14.

Mi proyecto es bastante más complejo, pero lo simplifijo lo más posible para explicarme bien.

En definitiva, quisiera 2 o más secuencias de tiempo (2 o más void loop) para hacer distintas cosas con el arduino MEGA (que es el que estoy utilizando).

Soy novato en esto y agradecería vuestra ayuda.

Muchas gracias a todos/as.

Se supone que deberías de usar millis() en lugar de delay() y una máquina de estados. Pero no es trivial.

El ejemplo "oficial" de hacerlo con millis() lo tienes (en inglés) aquí: https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay.

Y algo más complejo, con una máquina de estados y que se parece algo a lo que pides, lo puedes ver en la consulta alarma temporizada en un mismo led al presionar un botón en donde explico (más o menos) cómo soluciona el problema que plantean. Es bastante larga la explicación pero creo que te podrá dar ideas.