Retraso en reacción de pantalla DWIN

Saludos.
Soy nuevo en este foro y con poca experiencia en el manejo de arduino.
Este tema es para buscar ayuda con un pequeño proyecto que involucra el uso de un arduino Mega y un display hmi de la marca DWIN.
Debo aclarar que el uso de esta pantalla me ha costado bastante dada mi inexperiencia y por lo mismo puede que el problema presentado no le cueste trabajo a los expertos de este foro.
Para la programación del proyecto uso la librería https://github.com/satspares/DWIN_DGUS_HMI/tree/master como base para usar la pantalla DWIN.

El proyecto se encarga de que con una pantalla dwin se controla el encendido y apagado de 4 rele, la variación de voltaje de un motor dc,(esto mediante el control de un MCP4716) y la lectura de varios sensores, 2 de presión diferencial (uno que va soldado a la placa y otro externo; el soldado es un mpxv7007dp y el "externo" es sensor que entrega una señal en mA, obviamente cuento con el arreglo para que el arduino pueda leer esta señal en el puerto analógico. Se tiene también un modulo MAX31865 para leer los sensores PT100 de 3 y 4 hilos, así mismo, usan 2 anemometros.

Con el codigo de general de arduino y la comunicación con la pantalla se puede configurar el arduino para escoger cuantos sensores están activos al mismo tiempo, el maximo es de 4 al mismo tiempo.

Puedo dividir el codigo en varias partes, la que procesa lo que sucede entre la pantalla y el arduino, y la que lee los sensores.

Resulta que la comunicación entre la pantalla y el arduino es la normal siempre y cuando no incluya nada que tenga que ver con los sensores, pero si meto algún sensor, al momento de , por ejemplo, querer presionar en la pantalla algun boton para encender un relé, el boton se presiona en la pantalla pero el arduino no recibe la señal de la pantalla.

comparto el codigo del uno de los sensores y el como se envian sus datos a la pantalla.

//
void sense_PaAnes(){
  if(millis() - adcTimer[0] > 2000){
  if(m[0] == 1){readADC0(anPin0[0]);}
  else{readADC4(anPin0[4]);}
  if(m[2] == 1){readADC1(anPin0[1]);}
  if(m[3] == 1){readADC1(anPin0[3]);}
  adcTimer[0] = millis();
  }
} 

el codigo selecciona el sensor

void readADC0(byte APins0){ //reptir este codigo para cada salida analogica.
  int d[4]; int mpe; float pend = 1.54;  int promreadEX=0; 
    //limite inferior zero1=zero0     rango  span1 = span0     el limite lo define el valor de referencia rangoP
  for (int s = 0; s<30;s++){
    promreadEX=promreadEX+analogRead(APins0);
  }
  analogReadings[0] = promreadEX/30;
  d[0]=analogReadings[0];
  d[1]=zero1;
  d[2]=span1;
  d[3]=rangoP1;
  pend = float(d[2]-d[1])/float(d[3]);
  mpe = ((analogReadings[0]-d[1])/pend);
  pascal = mpe;      
  ca = (mpe*ToCA)*100;//valor de conversión de los datos.
  satur=(d[2]-d[1])/pend;
  //ENVIA LOS DATOS A LA PANTALLA
  if(masterE && !enviaData){
    muestra_estadoSL(mpe, ca,satur);
    hmi.setVPWord(0x6200, d[0]);
  }else{
    dataSRsensor();
  }
  if(dipValue>1){
    Salarma2(pascal);
  }else{
    alarmas2(mpe); 
  }
}

este código es el del sensor analogico y su calibración que puede ser calibrado cambiando los valores desde la pantalla.

Como ultimo dato, la tarjeta puede usarse como maestro esclavo mediante unos Módulos RS485 en una configuración halfduplex y practicamente se usa un solo codigo, dependiendo de una configuración en el hardware puede ser usado como esclavo o maestro.

Tu tema ha sido movido a la sección en español del foro porque usaste el idioma español.

Utiliza el idioma inglés en las secciones en inglés del foro.

Por favor, reproduce el código completo porque algo me dice que hay delay por ahi que estan frenando el código.
Sin embargo, veo que has usado millis() y hasta ahora (visto superficialmente) todo luce bien.

Podrías haber medido lo que te tarda la lectura de los sensores usando millis(). Eso ayudaría a identificar el responsable.