Tengo problemas con la función millis

Hola,
Llevo casi dos años trabajando en un código y la única parte que me falta solucionar es esta. Necesito incluir la función millis en esta parte del código, pero solo logre colocarlo en una led.
Si alguien me pudiera explicar como hacerlo o me pudiera ayudar se lo agradecería mucho, porque llevo semanas intentando entender como funciona millis con diferentes leds de manera simultanea, pero solo encuentro como aplicarla sobre una.

unsigned long t;
int ledStatus;

#ifdef COMMON_ANODE
#define LED_ON LOW
#define LED_OFF HIGH
#else
#define LED_ON HIGH
#define LED_OFF LOW
#endif

#define redLed 7    // Set Led Pins
#define greenLed 6
#define yellowLed 5

#define buzzer 3    // Set Buzzer Pin

//////////////////////////////////////// Normal Mode Led ///////////////////////////////////
void normalModeOn () {
  ledStatus = LED_OFF;
  digitalWrite(yellowLed, ledStatus);
  noTone(buzzer);
  if ( millis() - t >= 10000 ) {
    if ( ledStatus == LED_OFF )
      ledStatus = LED_ON;
    else {
      ledStatus = LED_OFF;
    }
    digitalWrite(yellowLed, ledStatus);
    tone(buzzer, 3520);
    t = millis();
    delay(100);
  }
  digitalWrite(redLed, LED_OFF);
  digitalWrite(greenLed, LED_OFF);
  digitalWrite(relay, LOW);
}

///////////////////////////////////////// Cycle Leds (Program Mode) ///////////////////////////////////
void cycleLeds() {
  digitalWrite(redLed, LED_OFF);
  digitalWrite(greenLed, LED_ON);
  digitalWrite(yellowLed, LED_OFF);
  delay(200);

  digitalWrite(redLed, LED_OFF);
  digitalWrite(greenLed, LED_OFF);
  digitalWrite(yellowLed, LED_ON);
  tone(buzzer, 3520);
  delay(200);

  digitalWrite(redLed, LED_ON);
  digitalWrite(greenLed, LED_OFF);
  digitalWrite(yellowLed, LED_OFF);
  noTone(buzzer);
  delay(200);
}

///////////////////////////////////////// Access Granted ///////////////////////////////////
void granted () {
  digitalWrite(relay, HIGH);
  tone(buzzer, 3520);
  digitalWrite(yellowLed, LED_OFF);
  digitalWrite(redLed, LED_OFF);
  digitalWrite(greenLed, LED_ON);
  delay(100);

  noTone(buzzer);
  delay(75);

  tone(buzzer, 3520);
  delay(200);

  digitalWrite(relay, LOW);
  noTone(buzzer);
  delay(200);
}

///////////////////////////////////////// Access Denied ///////////////////////////////////
void denied() {
  tone(buzzer, 3520);
  digitalWrite(greenLed, LED_OFF);
  digitalWrite(yellowLed, LED_OFF);
  digitalWrite(redLed, LED_ON);
  delay(500);

  noTone(buzzer);
  delay(200);
}

///////////////////////////////////////// Error ///////////////////////////////////
void error () {
  noTone(buzzer);
  digitalWrite(redLed, LED_OFF);
  digitalWrite(greenLed, LED_OFF);
  digitalWrite(yellowLed, LED_OFF);
  delay(200);

  tone(buzzer, 3520);
  digitalWrite(redLed, LED_ON);
  digitalWrite(greenLed, LED_ON);
  digitalWrite(yellowLed, LED_ON);
  delay(200);

  noTone(buzzer);
  digitalWrite(redLed, LED_OFF);
  digitalWrite(greenLed, LED_OFF);
  digitalWrite(yellowLed, LED_OFF);
  delay(200);

  tone(buzzer, 3520);
  digitalWrite(redLed, LED_ON);
  digitalWrite(greenLed, LED_ON);
  digitalWrite(yellowLed, LED_ON);
  delay(200);

  noTone(buzzer);
  digitalWrite(redLed, LED_OFF);
  digitalWrite(greenLed, LED_OFF);
  digitalWrite(yellowLed, LED_OFF);
  delay(200);
}

///////////////////////////////////////// Write Success to EEPROM ///////////////////////////////////
void successWrite() {
  digitalWrite(yellowLed, LED_OFF);
  digitalWrite(redLed, LED_OFF);
  digitalWrite(greenLed, LED_OFF);
  delay(200);

  digitalWrite(greenLed, LED_ON);
  tone(buzzer, 3520);
  delay(200);

  digitalWrite(greenLed, LED_OFF);
  noTone(buzzer);
  delay(200);

  digitalWrite(greenLed, LED_ON);
  tone(buzzer, 3520);
  delay(400);

  digitalWrite(greenLed, LED_OFF);
  noTone(buzzer);
  delay(200);
}

///////////////////////////////////////// Write Failed to EEPROM ///////////////////////////////////
void failedWrite() {
  digitalWrite(yellowLed, LED_OFF);
  digitalWrite(redLed, LED_OFF);
  digitalWrite(greenLed, LED_OFF);
  delay(200);

  digitalWrite(redLed, LED_ON);
  tone(buzzer, 3520);
  delay(800);

  digitalWrite(redLed, LED_OFF);
  noTone(buzzer);
  delay(200);
}

///////////////////////////////////////// Success Remove UID From EEPROM ///////////////////////////////////
void successDelete() {
  digitalWrite(yellowLed, LED_OFF);
  digitalWrite(redLed, LED_OFF);
  digitalWrite(greenLed, LED_OFF);
  delay(200);

  digitalWrite(redLed, LED_ON);
  tone(buzzer, 3520);
  delay(200);

  digitalWrite(redLed, LED_OFF);
  delay(200);

  digitalWrite(redLed, LED_ON);
  delay(200);

  digitalWrite(redLed, LED_OFF);
  noTone(buzzer);
  delay(200);
}

Moderador:
Por favor, lee las Normas del foro y edita tu título usando uno que refleje el tema que estas consultando y no algo como "Necesito ayuda con..."
El foro es de ayuda, asi que decirlo o pedirlo esta de mas.
No lo tomes a mal, debo indicártelo porque el punto 5 de las Normas así lo indica.
Ahora corrígelo por favor.
Gracias.

En Documentación, tienes muchos tutoriales sobre millis(). De todos modos te voy a dar una ayuda donde crea oportuno porque veo muchos delay(200) y eso es contra producente con millis().
Comencemos con que relay en la linea 38 ni en la 63 no esta definido.

digitalWrite(relay, LOW);

Asigno para probar el valor del pin 4

Sería importante ver todo el código.
Como esta ahora es dificil usar millis()

Mira, lo haré con una de tus rutinas con

void cycleleds()

pero considera que no solo debes usar millis() sino tmb máquina de estados.
Supongo que estos procedimientos son llamados por determinado momento.
No puede haber 1 solo delay() o las cosas comenzarán a funcionar mal.
Asi que lo que te modifico lo hago con esa observación.
En globales creas estas variables.

// definir como globale
byte estadocycleleds = 0;
unsigned long timecycleleds; // variable que lleva los estados lógicos de la rutina cycleleds

y luego tu rutina modificada como máquina de estados.

void cycleLeds() {
  static byte estadocycleleds = 0;
  

  while(estadocycleleds) {
          case 0: 
                  digitalWrite(redLed, LED_OFF);
                  digitalWrite(greenLed, LED_ON);
                  digitalWrite(yellowLed, LED_OFF);
                  tymecycleleds = millis();
                  estadocycleleds = 1;              // paso al siguiente estado lógico
                  break;
          case 1: if (millis() -tymecycleleds > 200UL) { // si es mayor que 200 msg reeplazo el delay sin bloquear
                      digitalWrite(redLed, LED_OFF);
                      digitalWrite(greenLed, LED_OFF);
                      digitalWrite(yellowLed, LED_ON);
                      tone(buzzer, 3520);
                      tymecycleleds = millis();
                      estadocycleleds = 2;              // paso al siguiente estado lógico
                  }
                  break;
          case 2: if (millis() -tymecycleleds > 200UL) { // si es mayor que 200 msg reeplazo el delay sin bloquear
                      digitalWrite(redLed, LED_ON);
                      digitalWrite(greenLed, LED_OFF);
                      digitalWrite(yellowLed, LED_OFF);
                      noTone(buzzer);
                      tymecycleleds = millis();
                      estadocycleleds = 3;              // paso al siguiente estado lógico
                  }
                  break;
          case 3: if (millis() -tymecycleleds > 200UL) { // si es mayor que 200 msg reeplazo el delay sin bloquear
                      estadocycleleds = 0;              // dejo preparado para proxima llamada a esta rutina
                  }
                  break;
  }
}

Primero que todo, muchas gracias.
Segundo, lo subí pero me marca el siguiente error:

In function 'void cycleLeds()':

3: error: case label '0' not within a switch statement

case 0:

^~~~

3: error: case label '1' not within a switch statement

case 1: if (millis() - timecycleleds > 200UL) { // si es mayor que 200 msg reeplazo el delay sin bloquear

^~~~

3: error: case label '2' not within a switch statement

case 2: if (millis() - timecycleleds > 200UL) { // si es mayor que 200 msg reeplazo el delay sin bloquear

^~~~
3: error: case label '3' not within a switch statement

case 3: if (millis() - timecycleleds > 200UL) { // si es mayor que 200 msg reeplazo el delay sin bloquear

^~~~

Error during build: exit status 1

Cambia while por switch, claramente fue un error involuntario de tipeo.

Debe quedar así

switch(estadocycleleds) {

Saludos

Funciono, muchas gracias!!!