Respirador COVID 19

hola, hace varios días llevo diseñando y programando un prototipo para ayudar con los respiradores del covid-19, el código consiste en: tener 3 pulsadores, uno de ellos se encarga de prender y apagar el sistema, el segundo de seleccionar la presión necesaria para cada paciente (niño, adulto, adulto mayor), el tercer pulsador cumple la función de velocidad (bajo, medio, alto) en donde necesito ayuda es para controlar el motor, ya que, necesito crear una intermitencia, ejemplo: al seleccionar la opción adulto necesito que funcione a la derecha 3s (ejemplo) y a la izquierda 3(s). Al utilizar delay() no me deja utilizar el pulsador para cambia de paciente (niño,adulto,adulto mayo) o de velocidades, me informe con un profesor que existe una función llamada millis() la cual he leído y visto varios vídeos pero no entiendo como se ocupara. Urgente, ya que es lo único que me faltaría para presentar proyecto en mi universidad

bool C,Y,W,M,S,R;                                          // declaracion de lls flancos de subida
int boton_onoff=1, boton_e=2, boton_v=3;    // declaracion de los botones de seleccion de etapas 
int led_e0=13, led_e1=12, led_e2=11;                       // delcaracion de led de casa etapa seleccionada 
int led_v0=10, led_v1=9, led_v2=8;                         // declaracion de los led de los tipos de velocidades 
int contador_onoff=0, contador_v=0, contador_e =0;
void setup() {
Serial.begin(9600);
pinMode (boton_onoff,INPUT);//--------------------------------|
pinMode (boton_e,INPUT); //-----------------------------------|--- declaracion de tipos de entradas
pinMode (boton_v,INPUT); //-----------------------------------|
pinMode (led_e0,OUTPUT); //-----------------------------------|
pinMode (led_e1,OUTPUT); //-----------------------------------|--- declaracion de tipos de salida
pinMode (led_e2,OUTPUT); //-----------------------------------|
pinMode (led_v0,OUTPUT); //-----------------------------------|
pinMode (led_v1,OUTPUT); //-----------------------------------|--- declaracion de tipos de salida
pinMode (led_v2,OUTPUT); //-----------------------------------|
}

void loop() {
  
  R=digitalRead(boton_v); // flanco de subida para el pulsador 
  if(R==LOW && W==HIGH)
    {contador_v++;
    delay(10);}
  
  S=digitalRead(boton_e); // flanco de subida para el pulsador 
  if(S==LOW && Y==HIGH)
    {contador_e ++;
    delay(10);}
    
  M=digitalRead(boton_onoff); // flanco de subida para el pulsador 
  if(M==LOW && C==HIGH)
    {contador_onoff ++;
    delay(10);}

  
  
  if(contador_onoff==1){    //if para prendeer y apagar el motor
    if(contador_e==0){   // if para controlar lasetapas del paciente (niño, adulto, adulto mayor)

      //AQUI HIRIA LA INTERMITENCIA DEL MOTOR CONTOLANDOLO CON UN PUNTE H (TB6612FNG)

      if(contador_v==0){
        digitalWrite(led_e0,HIGH);
        digitalWrite(led_e1,LOW);
        digitalWrite(led_e2,LOW);
        digitalWrite(led_v0,HIGH);
        digitalWrite(led_v1,LOW);
        digitalWrite(led_v2,LOW);
       }
      if(contador_v==1){
        digitalWrite(led_e0,HIGH);
        digitalWrite(led_e1,LOW);
        digitalWrite(led_e2,LOW);
        digitalWrite(led_v0,LOW);
        digitalWrite(led_v1,HIGH);
        digitalWrite(led_v2,LOW);
      }
      if(contador_v==2){
        digitalWrite(led_e0,HIGH);
        digitalWrite(led_e1,LOW);
        digitalWrite(led_e2,LOW);
        digitalWrite(led_v0,LOW);
        digitalWrite(led_v1,LOW);
        digitalWrite(led_v2,HIGH);
      }
    }
    if(contador_e==1){

      //AQUI HIRIA LA INTERMITENCIA DEL MOTOR CONTOLANDOLO CON UN PUNTE H (TB6612FNG)

      if(contador_v==0){
        digitalWrite(led_e0,LOW);
        digitalWrite(led_e1,HIGH);
        digitalWrite(led_e2,LOW);
        digitalWrite(led_v0,HIGH);
        digitalWrite(led_v1,LOW);
        digitalWrite(led_v2,LOW);
       }
      if(contador_v==1){
        digitalWrite(led_e0,LOW);
        digitalWrite(led_e1,HIGH);
        digitalWrite(led_e2,LOW);
        digitalWrite(led_v0,LOW);
        digitalWrite(led_v1,HIGH);
        digitalWrite(led_v2,LOW);
      }
      if(contador_v==2){
        digitalWrite(led_e0,LOW);
        digitalWrite(led_e1,HIGH);
        digitalWrite(led_e2,LOW);
        digitalWrite(led_v0,LOW);
        digitalWrite(led_v1,LOW);
        digitalWrite(led_v2,HIGH);
      }
    }
   if(contador_e==2){

    //AQUI HIRIA LA INTERMITENCIA DEL MOTOR CONTOLANDOLO CON UN PUNTE H (TB6612FNG)

      if(contador_v==0){
        digitalWrite(led_e0,LOW);
        digitalWrite(led_e1,LOW);
        digitalWrite(led_e2,HIGH);
        digitalWrite(led_v0,HIGH);
        digitalWrite(led_v1,LOW);
        digitalWrite(led_v2,LOW);
       }
      if(contador_v==1){
        digitalWrite(led_e0,LOW);
        digitalWrite(led_e1,LOW);
        digitalWrite(led_e2,HIGH);
        digitalWrite(led_v0,LOW);
        digitalWrite(led_v1,HIGH);
        digitalWrite(led_v2,LOW);
      }
      if(contador_v==2){
        digitalWrite(led_e0,LOW);
        digitalWrite(led_e1,LOW);
        digitalWrite(led_e2,HIGH);
        digitalWrite(led_v0,LOW);
        digitalWrite(led_v1,LOW);
        digitalWrite(led_v2,HIGH);
      } 
    }
  }
  if (contador_onoff==0){
        digitalWrite(led_e0,LOW);
        digitalWrite(led_e1,LOW);
        digitalWrite(led_e2,LOW);
        digitalWrite(led_v0,LOW);
        digitalWrite(led_v1,LOW);
        digitalWrite(led_v2,LOW);  
  }
     if (contador_onoff>1){
    contador_onoff = 0; }
    

   if (contador_e>2){
    contador_e = 0; }
    

     if (contador_v>2){
    contador_v = 0; }
    
    Serial.print(contador_v);
//    Serial.println("\t");
    Serial.print(contador_onoff);
//    Serial.println("\t");
    Serial.print(contador_e);
    Serial.println("\t");
    
    C=M;
    Y=S;
    W=R;
}

Para ayudarte necesitamos saber la relación exacta entre edad/velocidad.

Tenemos claro que On/Off será el respirador encendido/apagado.

Lo que necesitamos saber son las secuencias que ha de realizar el motor en cada uno de los otros posibles estados de edad y velocidad. Por ejemplo, edad es adulto y velocidad baja, ¿qué ha de hacer el motor?. Así con las posibles 9 combinaciones de edad/velocidad.

Ve a Documentación => Indice de temas tutoriales => millis()

Hay muchos tutoriales al respecto.

millis() reemplaza a delay() y no detiene al microcontrolador.

Bueno voy a intervenir un poco en este post no como critica si no para alentarte a que investigues mas sobre el tema ya que un respirador artificial no solo es echar aire y ya, y no funciona como tu lo planteas aqui:

utilizar el pulsador para cambia de paciente (niño,adulto,adulto mayo) o de velocidades,

Es mucho mas complejo que eso.
Te comento: mi hermana es medico con especialidad en anestesiologia, por lo tanto sabe bastante sobre el tema y le hice la pregunta de que parametros maneja un respirador ya que yo soy un completo ignorante del tema y me contesto que son muchos, por mencionar algunos de ellos: concentración de oxigeno, frecuencia respiratoria, volumen por minuto, la presión final de espiración (creo que esta es importante) entre algunas otras mas.
Entonces como ves no solo es soplar a las pulmones como si fuese un neumático, se requieren de muchos factores a considerar no solo si es adulto o niño.
Si en realidad quieres hacer un respirador que sirva para atender pacientes con covid, tendrás que investigar y leer mucho y asesorarte con un medico o algún ingeniero biomedico, y después de terminado el proyecto y que funcione tendrá que ser revisado y certificado por la autoridad de salud de tu país para que pueda llegar a un paciente

Saludos

Quizas mejor que iniciar un nuevo proyecto sea animarte a colaborar con una ya iniciado: Proyectos en Github.

Yo creo que esto define todo

Urgente, ya que es lo único que me faltaría para presentar proyecto en mi universidad

y ya no lo veremos por aquí, no respondes desde el 6/04 y si fuera tan URGENTE estaría todos los días pendiente.
Todo aquel que llega con algo Urgente si no lo consigue de modo inmediato en general no vuelve.

Además solo debía responder a la @victorjam para continuar con su proyecto.