Arduino me manda caracteres al puerto serie que no tienen que estar

Hola buenas tardes me presento soy ángel y llevo tiempo aquí pero todavía no he posteados apenas, mis proyectos no son muy grandes los utilizo para algunas cosas de la vida diaria. bueno a al grano. estoy con un proyecto de un microfugomentro para mi trabajo que tengo que hacer un calibrador para ahorrar un poco de tiempo en la calibración, el caso es que tengo un Arduino uno que hace de señales digitales para que accione varias salidas y que no tenga que estar nadie delante para darle al botón. El caso es que la trama de 232 que envía el microfugometro la recoge el Arduino por el puerto serie de los pines y después la recoge un ordenador conectado al USB del Arduino para mostrarla en un Excel y aquí viene el problema al pasar la trama del micro al Arduino y del Arduino al ordenador he puesto un código que funciona pero cuando llevo como dos pruebas es decir 80 trasmisiones va bien pero luego empieza a meter caracteres raros que no deben de estar ahí y pregunto como puedo depurar el código o alguna idea que no meta estos caracteres es aleatorio y no suplanta ninguna linea asea que es el que mete al canal eso caracteres. gracias a quien le venga bien echar una mano. Un saludo a todos y feliz dia. les paso el codigo para que se vea las chapucillas que hago.

#define DEBUG(a) Serial.println(a);
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 
#define SCREEN_HEIGHT 32 
#define OLED_RESET     (-1)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
unsigned long tiempo ;
unsigned long tiempo_guardado ;
int contador_atras= 2081;////DATO DE CAMBIO DE TIEMPO
int parpadeo=5;//boton parpadeante cuando se cumpla la condicion de aire
int sinaire=13;//pitido sin aire sensor de estacion de mantenimiento de aire dntro del rango requerido
int botonparpa=A3;//entrada de boton de inicio de prueba
int aire=A2;//señal de estacion de mantenimoento de que hay aire en la instalacion
int manuvalvu1=2;// manualizado de valvulas 2 y 1 a la vez para ver fuga de 4.6ml/min
int manuvalvu2=3;// manualizado de valvulas 3 y 1 a la vez para ver fuga de 9.8ml/min
int manuvalvu3=4;// manualizado de valvulas 4 y 1 a la vez para ver fuga de 21ml/min
int releprueba2=A0;//rele señal de inicio de prueba
int releprueba5=7;// rele prueba de fuga pin 5 del regletero de conexiones
int releprueba6=8;// rele prueba de fuga pin 6
int releprueba7=10;//rele prueba de fuga pin 7
int releprueba8=9;// rele prueba de fuga pin 8
int valvu1=6;//accionamiento valvula 1
int valvu2=A1;//accionamiento valvula 2
int valvu3=11;//accionamiento valvula 3
int valvu4=12;//accionamiento valvula 4


void setup()

{
    Wire.begin();
 
         Serial.begin(9600);
        display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  
        display.clearDisplay();
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(0,0);
        display.println("FUGASET byANGEL PAL");
        display.display();
        delay(2000);
        display.clearDisplay();
       
         pinMode(aire, INPUT);
         pinMode(parpadeo, OUTPUT);
         pinMode(sinaire, OUTPUT);
         pinMode(botonparpa, INPUT);
         pinMode(releprueba2, OUTPUT);
         pinMode(releprueba5, OUTPUT);
         pinMode(releprueba6, OUTPUT);
         pinMode(releprueba8, OUTPUT);
         pinMode(releprueba7, OUTPUT);
         pinMode(valvu1, OUTPUT);
         pinMode(valvu2, OUTPUT);
         pinMode(valvu3, OUTPUT);
         pinMode(valvu4, OUTPUT);
         pinMode(manuvalvu1, INPUT);
         pinMode(manuvalvu2, INPUT);
         pinMode(manuvalvu3, INPUT);
        
        
}


void loop()
{ 
   
    int aire1=0;
    int releprueba1=0;
    int push1=0;
    int push2=0;
    int push3=0;
    
     push1=digitalRead(manuvalvu1);
     push2=digitalRead(manuvalvu2);
     push3=digitalRead(manuvalvu3);
  
     aire1=digitalRead(aire);
     releprueba1=digitalRead(releprueba5);
  if(aire1==HIGH){ //si hay aire da acceso al boton parpadear. si no hay un pitido
     if(contador_atras == 2081)// aqui si el contador sigue en 19 al inicio parpadea//DATO DE CAMBIO DE TIEMPO
     {
      digitalWrite(parpadeo,HIGH);
      delay(700);
      digitalWrite(parpadeo,LOW);//bonton parpadea si hay aire
      delay(300);
      
      //Serial.println("hay  aire");//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      
     }
      int botonparpa1=0;
    botonparpa1=digitalRead(botonparpa);
       
    
   if((botonparpa1==HIGH) || (contador_atras < 2081)){  // funcion de comparacion con la prueba con tapon//DATO DE CAMBIO DE TIEMPO
    
      if((contador_atras == 2080))//esta variable se pone el tiempo de inicio de la prueba 1//DATO DE CAMBIO DE TIEMPO
         {
         

            
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
         
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
          // Serial.println("1 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx1
           
         }
       if(contador_atras == 2060)//esta variable se pone el tiempo de inicio de la prueba2
         {
            
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
           //Serial.println("2 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx2
           
         }
         if(contador_atras == 2040)//esta variable se pone el tiempo de inicio de la prueba3
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
          // Serial.println("3 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx3
           
         }
         if(contador_atras == 2020)//esta variable se pone el tiempo de inicio de la prueba4
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
          // Serial.println("4 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx4
           
         }
         if((contador_atras == 2000))//esta variable se pone el tiempo de inicio de la prueba5
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
          // Serial.println("5 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx5
           
         }
       if(contador_atras == 1980)//esta variable se pone el tiempo de inicio de la prueb6
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
          // Serial.println("6 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx6
           
         }
         if(contador_atras == 1960)//esta variable se pone el tiempo de inicio de la prueba7
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
          // Serial.println("7 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx7
           
         }
         if(contador_atras == 1940)//esta variable se pone el tiempo de inicio de la prueba8
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
          // Serial.println("8 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx8
           
         }
         if(contador_atras == 1920)//esta variable se pone el tiempo de inicio de la prueba9
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
          // Serial.println("9 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx9
           
         }
         if(contador_atras == 1900)//esta variable se pone el tiempo de inicio de la prueba10
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
         //  Serial.println("10 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx-10----------------------------------------------------
           
         }
         if(contador_atras == 1880)                                                         //11
         {
            digitalWrite(valvu1, HIGH);
            digitalWrite(valvu2, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
         //   Serial.println("1 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx 1
         }
         if(contador_atras == 1820)                                                           //12
         {
            
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
         //   Serial.println("2 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx2
         }
         if(contador_atras == 1760)                                                            //13
         {
          
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
         //   Serial.println("3 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx3
         }
          if(contador_atras ==1700)                                                             //14
         {
           
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
          //  Serial.println("4 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx4
         }
         if(contador_atras == 1640)                                                             //15                            
         {
            
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
         //   Serial.println("5 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx5
         }
         if(contador_atras == 1580)                                                             //16
         {
          
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
         //   Serial.println("6 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx6
         }
          if(contador_atras == 1520)                                                              //17
         {
            
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
         //   Serial.println("7 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx7
         }
         if(contador_atras == 1460)                                                              // 18
         {
            
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
          //  Serial.println("8 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx8
         }
         if(contador_atras == 1400)                                                               //19
         {
          
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
           // Serial.println("9 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx9
         }
         if(contador_atras == 1340)                                                               //20
         {
          
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
           // Serial.println("10 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx10
         }
         if(contador_atras == 1280)                                                               
         {
            digitalWrite(valvu1, LOW);
            digitalWrite(valvu2, LOW);
            
           // Serial.println("cierre de valvu terminada prueba 4.6"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx-------------------------------------------
         }
         if(contador_atras == 1270)                                                                  // 21
         {
            digitalWrite(valvu1, HIGH);
            digitalWrite(valvu3, HIGH);
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
           // Serial.println("1 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx1
         }
         if(contador_atras == 1210)                                                                  // 22
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
           // Serial.println("2 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx2
         }
         if(contador_atras == 1150)                                                                   //  23
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
           // Serial.println("3 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx3
         }
         if(contador_atras == 1090)                                                                   //24
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
           // Serial.println("4 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx4
         }
         if(contador_atras == 1030)                                                                   //25
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
           // Serial.println("5 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx5
         }
         if(contador_atras == 970)                                                                   //26
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
           // Serial.println("6 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx6
         }
         if(contador_atras == 910)                                                                   //27
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
           // Serial.println("7 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx7
         }
         if(contador_atras == 850)                                                                   //28  
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
           // Serial.println("8 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx8
         }
         if(contador_atras == 790)                                                                   //29
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
           // Serial.println("9 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx9
         }
         if(contador_atras == 730)                                                                    //30
         {  
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
           /// Serial.println("10 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx10
         }
         if(contador_atras == 670)
         {
            digitalWrite(valvu1, LOW);
            digitalWrite(valvu3, LOW);
           // Serial.println("cierre de valvu terminada prueba 9.8 "); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx----------------------------------------------
         }
         if(contador_atras == 660)                                                                      // 31
         {
            digitalWrite(valvu1, HIGH);
            digitalWrite(valvu4, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
           // Serial.println("1 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx1
         }
         if(contador_atras == 600)                                                                      // 32
         {
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
           // Serial.println("2 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx2
         }
         if(contador_atras == 540)                                                                       //33
         {
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
          //  Serial.println("3 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx3
         }
         if(contador_atras == 480)                                                                       //34
         {
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
           // Serial.println("4 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx4
         }
         if(contador_atras == 420)                                                                       //35
         {
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
          //  Serial.println("5 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx5
         }
         if(contador_atras == 360)                                                                      // 36
         {
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
           // Serial.println("6 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx6
         }
         if(contador_atras == 300)                                                                      // 37
         {
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
          //  Serial.println("7 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx7
         }
         if(contador_atras ==240)                                                                      // 38
         {
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
          //  Serial.println("8 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx8
         }
         if(contador_atras == 180)                                                                       // 39
         {
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
          //  Serial.println("9 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx9
         }
         if(contador_atras == 120)                                                                         //40
         {
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay(1000);
          //  Serial.println("10 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx10
         }
         if(contador_atras == 60)
         {
            digitalWrite(valvu1, LOW);
            digitalWrite(valvu4, LOW);
          //  Serial.println("cierre de valvu terminada prueba 21 "); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx
         }
         
      //Serial.println("prueba activa"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx
      delay(100);
      //funcion de cuentra atras en seg de la prueba
       tiempo=millis();
       if (tiempo-tiempo_guardado>=1000){ //produce un evento cada 1000 milisegundo (1 seg)
           tiempo_guardado=tiempo;
          if  (contador_atras > 0 ){
               contador_atras--;
                } else {
                 contador_atras=2081;//se selecciona el tiempo para contar hacia atra//DATO DE CAMBIO DE TIEMPO
                  } 
        //Serial.println(  contador_atras); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx
         
        display.setTextSize(4);
        display.setTextColor(WHITE);
        display.setCursor(5,2);
        display.println(contador_atras);
        display.display();
        
        display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(100,20);
        display.println("seg");
        display.display();
        delay(20);
       if((contador_atras<=2080)&&(contador_atras>=1880))
       {
         display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(105,5);
        display.println("1");
        display.display();
        display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(100,12);
        display.println("prg");
        display.display();

       }
       if((contador_atras<=1879)&&(contador_atras>=1280))
       {
        display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(105,5);
        display.println(" ");
        display.display();
         display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(105,5);
        display.println("2");
        display.display();
        display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(100,12);
        display.println("prg");
        display.display();
        delay(20);
       }
       
       if((contador_atras<=1269)&&(contador_atras>=670))
       {
        display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(105,5);
        display.println(" ");
        display.display();
         display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(105,5);
        display.println("3");
        display.display();
        display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(100,12);
        display.println("prg");
        display.display();
        delay(20);
       }
        if((contador_atras<=669)&&(contador_atras>=1))
       {
        display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(105,5);
        display.println(" ");
        display.display();
         display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(105,5);
        display.println("4");
        display.display();
        display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(100,12);
        display.println("prg");
        display.display();
        delay(20);
       }
        display.clearDisplay(); 
       }
         
      
      
   }
  
  } 
  else{
    
    digitalWrite(sinaire, HIGH);//sonido de aviso de que no hay aire
    delay(400);
   digitalWrite(sinaire, LOW); 
    delay(400);
    // Serial.println("sin aire");//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
     
  }
  
  if((contador_atras==2081)&&(aire1==HIGH))//DATO DE CAMBIO DE TIEMPO
  {
    
    if((push1==HIGH)&&(push2==LOW)&&(push3==LOW)&&(contador_atras==2081)){//DATO DE CAMBIO DE TIEMPO
      digitalWrite(valvu1, HIGH);
      digitalWrite(valvu2, HIGH);
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.setCursor(0,2);  
      display.println("MANUAL 4.6 ml/min");
      display.display();
      delay(900);
      display.clearDisplay();
      //  Serial.println("manu 1");//xxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxx
        
    }
    int val1=0;
    int val2=0;
    val1=digitalRead(valvu1);
    val2=digitalRead(valvu2);
    if((push1==LOW)&&(val1==HIGH)&&(val2==HIGH)){
      digitalWrite(valvu1, LOW);
      digitalWrite(valvu2, LOW);
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.setCursor(0,0);
      display.println("FUGASET byANGEL PAL");
      display.display();
      delay(900);
      display.clearDisplay();
        
    }
  
    
      if((push1==LOW)&&(push2==HIGH)&&(push3==LOW)&&(contador_atras==2081)){//DATO DE CAMBIO DE TIEMPO
      digitalWrite(valvu1, HIGH);
      digitalWrite(valvu3, HIGH);
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.setCursor(0,2);  
      display.println("MANUAL 9.8 ml/min");
      display.display();
      delay(900);
      display.clearDisplay();
    //  Serial.println("manu 2");//xxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxx
        
    }
   
    int val4=0;
   
    val4=digitalRead(valvu3);
    if((push2==LOW)&&(val1==HIGH)&&(val4==HIGH)){
      digitalWrite(valvu1, LOW);
      digitalWrite(valvu3, LOW);
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.setCursor(0,0);
      display.println("FUGASET byANGEL PAL");
      display.display();
      delay(900);
      display.clearDisplay();
     // Serial.println("manu 2222222222");//xxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxx  
    }

    
    if((push1==LOW)&&(push2==LOW)&&(push3==HIGH)&&(contador_atras==2081)){//DATO DE CAMBIO DE TIEMPO
      digitalWrite(valvu1, HIGH);
      digitalWrite(valvu4, HIGH);
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.setCursor(0,2);  
      display.println("MANUAL 21 ml/min");
      display.display();
      delay(900);
      display.clearDisplay();
         // Serial.println("manu 3");//xxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxx
        
    }
    
    int val6=0;
    
    val6=digitalRead(valvu4);
    if((push3==LOW)&&(val1==HIGH)&&(val6==HIGH)){
      digitalWrite(valvu1, LOW);
      digitalWrite(valvu4, LOW);
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.setCursor(0,0);
      display.println("FUGASET byANGEL PAL");
      display.display();
      delay(900);
      display.clearDisplay();
        
    }

  
  }

 
  
   while(contador_atras==0) {//terminacion de prueba reset para hacer una nueva
   
        // Serial.println("teminada la prueba de fuga");//xxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxx
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(0,2);
        display.println("<<FINAL>>   PRUEBA ");
        display.display();
        delay(1000);
        display.clearDisplay();
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(5,2);
        display.println(" ");
        display.display();
        delay(1000);
        display.clearDisplay();
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(0,0);
        display.println("  RESET   para nueva ");
        display.display();
        delay(1000);
        display.clearDisplay();
        display.clearDisplay();
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(5,2);
        display.println(" ");
        display.display();
        delay(1000);
   }
   while( (contador_atras<2081) && ((push1==HIGH) || (push2==HIGH) || (push3==HIGH)))//DATO DE CAMBIO DE TIEMPO
   {
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(0,2);
        display.println("<<FINAL>>   PRUEBA ");
        display.display();
        delay(1000);
        display.clearDisplay();
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(5,2);
        display.println(" ");
        display.display();
        delay(1000);
        display.clearDisplay();
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(0,0);
        display.println("  RESET   para nueva ");
        display.display();
        delay(1000);
        display.clearDisplay();
        display.clearDisplay();
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(5,2);
        display.println(" ");
        display.display();
        delay(1000);
   }
       if (Serial.available())//funcion que manda la trama al serial
         {
           String data = Serial.readStringUntil('\n');
            DEBUG(data);
           
         }
   
   
  
      
}

Por favor, es muy importante, corrige tu post y pon el código según las Normas del foro en Español, punto 7, es para tu beneficio. Gracias.

Salvo que pretendas cambiar la velocidad del puerto serie sobre la marcha, el mismo se inicializa en setup(). En todo caso siempre tiene que haber al menos una inicialización previa a cualquier operación sobre el puerto.

Fijate que tu lo inicializas luego de ya haber hecho algunos print y read.

¿Y con qué velocidad se hace la comunicación si no se ha inicializado el puerto aún?

Seguramente ahí estan tus caracteres "raros", en que la consola no "entiende" al arduino y escribe lo que (mal) interpreta.


Nota: Siendo estrictos, para hacer la inicialización en el loop() como tu lo has hecho, tendría que haber previamente una instrucción

Serial.end();

Igual no es tu caso.


Mueve la línea

Serial.begin(9600);

al setup().

Si sigue fallando vemos si hay algo más.

Saludos

PD: Aunque lo que te digo sea la solución, por favor edita para que tu código se muestre como debe.

Buenas tardes gatul disculpa por la tropelía que hice que no estoy muy familiarizado con los foros y he escrito pocos no quiero molestar demasiado,
pero ya hice anteriormente lo que comentas pero sin éxito ninguno por ese pido ayuda. me gustaría aprender el modo de que la transferencia en comunicación en puerto serial fuese lo mas limpia posible para no tener fallos de
comunicación por que dejaría de funcionar por completo el proyecto y no me gustaría tener que dejarlo a estas alturas muchas gracias por tus consejos y apoyo un saludo. Implemente código de otro proyecto que no se muy bien que es lo que hace pero empezó a funcionar y lo deje así pero no lo tengo muy claro me podrías explicar que es lo que produce esta función

#define DEBUG(a) Serial.println(a); 
if (Serial.available())
         {
           String data = Serial.readStringUntil('\n');
            DEBUG(data);
           
         }

Por cierto no se si el código esta bien estructurado me gustaría que me dieses algún consejo sobre esto también, un saludo.

Yo veo muchos delays en tu codigo que comprometen lo que puede leer el Serial.
Debes reescribir el codigo sin usarlos, debes usar millis().

#define DEBUG(a) Serial.println(a);

Esa línea define una macro, al momento de compilar la línea

DEBUG(data);

será reemplazada por

Serial.println(data);

La idea es que mientras depuras tu código puedas ir viendo por consola los valores que te interese controlar en ese momento, por ejemplo asegurarte que en tal lugar del código una variable tiene el valor que esperas que tenga.
Cuando ya no lo necesitas, simplemente comentas la línea

// DEBUG(data);

Parece tonto no poner directamente

Serial.println(data);

pero te aseguro que al momento de querer quitarlos es más fácil encontrar la palabra DEBUG que revisar cada Serial para ver si es el que quieres eliminar (sobre todo si tu programa usa mucho la consola).

En tu codigo, comenta las lineas con DEBUG y fin del problema.

Saludos

PD: La explicación la centré en este caso particular pero el tema es muchísimo más amplio. Te recomiendo buscar "arduino depuración" o temas similares en Google, si te interesa profundizar el asunto.

Si pero mas allá de comentarla, el tema pasa por si esta leyendo cosas que luego se usen como comandos o para que el Excel los vea fielmente.
En cada acción que incluye un delay(1000) se pierde 1 segundo de datos que no pueden transferirse al Excel.
No se como funciona el dispositivo, si es relevante o no pero a priori eso luce por lo menos sospechoso.

@Surbyte No revisé a fondo el código, le marqué lo primero que vi que fue la inicialización del Serial (porque era lo relacionado con su consulta) y le aclaré que si había más problemas lo veíamos.

Y justamente, aquí estamos con tu observación que es bienvenida. :wink:

@angpal ¿Cuál sería el sentido de

if (Serial.available())  //funcion que manda la trama al serial
{
  String data = Serial.readStringUntil('\n');
  DEBUG(data);
}

?

Porque lo único que hace es leer una línea del puerto serie (si hay datos) y reenviarlos, o sea hace un eco.

No tiene otro uso ya que la variable data es local y se pierde al salir del if().

Saludos

PD: En cuanto tenga más tiempo voy a ver lo que nos ha hecho notar @Surbyte , es muy importante eliminar esos delays.

ok muchas gracias a ti gatul y a ti Surbyte por arrojar algo de luz sobre la sombra que tenia , probare con millis y vere si se soluciona y posteo lo que salga. De todas maneras y si esa es la solucion me alegrare mucho un saludo. gatul muchas gracias por la aclaracion de esas lineas, espero a ver sido correcto con mis comentarios y gracias de nuevo.

Tu programa es largo porque tiene Muchaaaaaaaassss condiciones para probar evidentemente muchas situaciones, asi que lo que te sugiero tómalo con pinzas.
La solución a tu problema se llama : máquina de estados y millis(). En la sección Documentación hay muy buenos tutoriales sobre ambas.
La máquina de estados hará lo mismo que hacen tus if de manera ordenada. En ese punto no cambias nada, pero hará el código mas fácil de leer, ya entderás por que lo digo.
millis() en cambio no detiene al micro como si lo hace delay().
Si tienes algo de 1000 mseg tu micro se queda paspando moscas 1 seg y luego haces dos cambios y de nuevo 1 seg mirando para otro lado y asi.
En cambio con una maquina de estados y millis() todo ocurre como si fuera una máquina de ultima generación, al final sigue siendo el mismo microcontrolador pero bien programado.
Cada loop insumirá menos de 1mseg y de ese modo si debe leer algo del puerto serie no lo va a perder.
Ese es el gran cambio que introducieras de seguir este consejo.

Bien podría estar equivocado, pero creo que lo que se trata de hacer con el puerto serie es leer por el pin 0 (RX) del Arduino lo que envía el microfugometro por su puerto RS232 y reenviar al ordenador por el TX (pin 1) del Arduino lo recibido. Lo que no lo hace por el pin 1, sino a través del USB que está conectado al ordenador. Hace un eco tal como ha dicho @anon90500195. Es un curioso apaño para tener un adaptador RS232 a USB en un sólo sentido.

Por otro lado está el resto del programa del Arduino, que como bien dice @Surbyte, está plagado de llamadas a la función delay(). Esto hace que la mayor parte del tiempo el programa esté detenido y no atienda a la recepción del del puerto serie. A pesar de ello, Serial tiene un pequeño buffer en el que va almacenando los datos según van llegando. Supongo que a pesar de que “se tarda mucho” entre lectura y lectura del puerto serie, el buffer aguanta hasta cierto punto. Porque para colmo, cuando por fin llega a leer el puerto serie, sólo lee una línea, si la hay, y vuelve con el resto del programa. De tal forma que si ya hubiera otra línea a medias o completa, no la lee en ese momento, sino para el siguiente ciclo. Y poco a poco se pueden ir acumulando cada vez más datos en el buffer hasta que este se llena. ¿Y qué pasa si se llena? Pues que los bytes que lleguen no se almanecerán en ningún lado y “se pierden”. Creo que es eso lo que está pasando, que está “perdiendo” bytes.

Esto se podría mejorar si se cambia el if de:


if (Serial.available())//funcion que manda la trama al serial

… por un while:


while (Serial.available())//funcion que manda la trama al serial

Con este cambio, si ya hay datos de una segunda línea, no se espera al “siguiente ciclo” para procesar esa segunda línea. Pero aún así, no se garantiza que no vuelva a ocurrir con el tiempo. Sobre todo si se añaden más dealy() en el programa.

Lo ideal sería usar millis() y “máquinas de estados”. Pero eso supone rehacer todo el código. Así que, como apaño de urgencia sobre lo que ya se tiene hecho, se pueden sustituir la llamadas a la función millis() por una hecha “a medida” de lo que necesitamos. Una función que haga el “eco” del puerto serie mientras espera los milisegundos indicados. La función sería:

void delay_eco(unsigned long milisegundos) {
    unsigned long instanteInicial = millis();             // Guardamos el instante en que comienza a esperar
    while (millis() - instanteInicial < milisegundos) {   // Mientras no haya transcurrido el tiempo estipulado...
        if (Serial.available()) {                         // ... se mira a ver si se ha recibido algún dato y está pendiente de leer
            Serial.write(Serial.read());                  // Si se ha recibido algún dato, se lee y se manda
        }
    }
}

Con esta función, sólo nos queda sustituir todas las llamadas a delay() por llamada a delay_eco y quitar todo el if del final. El código quedaría tal que así:

#define DEBUG(a) Serial.println(a);
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 
#define SCREEN_HEIGHT 32 
#define OLED_RESET     (-1)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
unsigned long tiempo ;
unsigned long tiempo_guardado ;
int contador_atras= 2081;////DATO DE CAMBIO DE TIEMPO
int parpadeo=5;//boton parpadeante cuando se cumpla la condicion de aire
int sinaire=13;//pitido sin aire sensor de estacion de mantenimiento de aire dntro del rango requerido
int botonparpa=A3;//entrada de boton de inicio de prueba
int aire=A2;//señal de estacion de mantenimoento de que hay aire en la instalacion
int manuvalvu1=2;// manualizado de valvulas 2 y 1 a la vez para ver fuga de 4.6ml/min
int manuvalvu2=3;// manualizado de valvulas 3 y 1 a la vez para ver fuga de 9.8ml/min
int manuvalvu3=4;// manualizado de valvulas 4 y 1 a la vez para ver fuga de 21ml/min
int releprueba2=A0;//rele señal de inicio de prueba
int releprueba5=7;// rele prueba de fuga pin 5 del regletero de conexiones
int releprueba6=8;// rele prueba de fuga pin 6
int releprueba7=10;//rele prueba de fuga pin 7
int releprueba8=9;// rele prueba de fuga pin 8
int valvu1=6;//accionamiento valvula 1
int valvu2=A1;//accionamiento valvula 2
int valvu3=11;//accionamiento valvula 3
int valvu4=12;//accionamiento valvula 4

void delay_eco(unsigned long milisegundos) {
    unsigned long instanteInicial = millis();             // Guardamos el instante en que comienza a esperar
    while (millis() - instanteInicial < milisegundos) {	  // Mientras no haya transcurrido el tiempo estipulado...
        if (Serial.available()) {                         // ... se mira a ver si se ha recibido algún dato y está pendiente de leer
            Serial.write(Serial.read());                  // Si se ha recibido algún dato, se lee y se manda
        }
    }
}

void setup()

{
    Wire.begin();
 
         Serial.begin(9600);
        display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  
        display.clearDisplay();
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(0,0);
        display.println("FUGASET byANGEL PAL");
        display.display();
        delay_eco(2000);
        display.clearDisplay();
       
         pinMode(aire, INPUT);
         pinMode(parpadeo, OUTPUT);
         pinMode(sinaire, OUTPUT);
         pinMode(botonparpa, INPUT);
         pinMode(releprueba2, OUTPUT);
         pinMode(releprueba5, OUTPUT);
         pinMode(releprueba6, OUTPUT);
         pinMode(releprueba8, OUTPUT);
         pinMode(releprueba7, OUTPUT);
         pinMode(valvu1, OUTPUT);
         pinMode(valvu2, OUTPUT);
         pinMode(valvu3, OUTPUT);
         pinMode(valvu4, OUTPUT);
         pinMode(manuvalvu1, INPUT);
         pinMode(manuvalvu2, INPUT);
         pinMode(manuvalvu3, INPUT);
        
        
}


void loop()
{ 
   
    int aire1=0;
    int releprueba1=0;
    int push1=0;
    int push2=0;
    int push3=0;
    
     push1=digitalRead(manuvalvu1);
     push2=digitalRead(manuvalvu2);
     push3=digitalRead(manuvalvu3);
  
     aire1=digitalRead(aire);
     releprueba1=digitalRead(releprueba5);
  if(aire1==HIGH){ //si hay aire da acceso al boton parpadear. si no hay un pitido
     if(contador_atras == 2081)// aqui si el contador sigue en 19 al inicio parpadea//DATO DE CAMBIO DE TIEMPO
     {
      digitalWrite(parpadeo,HIGH);
      delay_eco(700);
      digitalWrite(parpadeo,LOW);//bonton parpadea si hay aire
      delay_eco(300);
      
      //Serial.println("hay  aire");//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      
     }
      int botonparpa1=0;
    botonparpa1=digitalRead(botonparpa);
       
    
   if((botonparpa1==HIGH) || (contador_atras < 2081)){  // funcion de comparacion con la prueba con tapon//DATO DE CAMBIO DE TIEMPO
    
      if((contador_atras == 2080))//esta variable se pone el tiempo de inicio de la prueba 1//DATO DE CAMBIO DE TIEMPO
         {
         

            
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
         
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
          // Serial.println("1 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx1
           
         }
       if(contador_atras == 2060)//esta variable se pone el tiempo de inicio de la prueba2
         {
            
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
           //Serial.println("2 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx2
           
         }
         if(contador_atras == 2040)//esta variable se pone el tiempo de inicio de la prueba3
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
          // Serial.println("3 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx3
           
         }
         if(contador_atras == 2020)//esta variable se pone el tiempo de inicio de la prueba4
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
          // Serial.println("4 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx4
           
         }
         if((contador_atras == 2000))//esta variable se pone el tiempo de inicio de la prueba5
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
          // Serial.println("5 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx5
           
         }
       if(contador_atras == 1980)//esta variable se pone el tiempo de inicio de la prueb6
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
          // Serial.println("6 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx6
           
         }
         if(contador_atras == 1960)//esta variable se pone el tiempo de inicio de la prueba7
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
          // Serial.println("7 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx7
           
         }
         if(contador_atras == 1940)//esta variable se pone el tiempo de inicio de la prueba8
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
          // Serial.println("8 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx8
           
         }
         if(contador_atras == 1920)//esta variable se pone el tiempo de inicio de la prueba9
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
          // Serial.println("9 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx9
           
         }
         if(contador_atras == 1900)//esta variable se pone el tiempo de inicio de la prueba10
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
         //  Serial.println("10 tapon prog 12"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx-10----------------------------------------------------
           
         }
         if(contador_atras == 1880)                                                         //11
         {
            digitalWrite(valvu1, HIGH);
            digitalWrite(valvu2, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
         //   Serial.println("1 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx 1
         }
         if(contador_atras == 1820)                                                           //12
         {
            
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
         //   Serial.println("2 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx2
         }
         if(contador_atras == 1760)                                                            //13
         {
          
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
         //   Serial.println("3 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx3
         }
          if(contador_atras ==1700)                                                             //14
         {
           
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
          //  Serial.println("4 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx4
         }
         if(contador_atras == 1640)                                                             //15                            
         {
            
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
         //   Serial.println("5 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx5
         }
         if(contador_atras == 1580)                                                             //16
         {
          
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
         //   Serial.println("6 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx6
         }
          if(contador_atras == 1520)                                                              //17
         {
            
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
         //   Serial.println("7 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx7
         }
         if(contador_atras == 1460)                                                              // 18
         {
            
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
          //  Serial.println("8 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx8
         }
         if(contador_atras == 1400)                                                               //19
         {
          
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
           // Serial.println("9 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx9
         }
         if(contador_atras == 1340)                                                               //20
         {
          
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
           
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
           // Serial.println("10 fuga con 4.6 programa 13"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx10
         }
         if(contador_atras == 1280)                                                               
         {
            digitalWrite(valvu1, LOW);
            digitalWrite(valvu2, LOW);
            
           // Serial.println("cierre de valvu terminada prueba 4.6"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx-------------------------------------------
         }
         if(contador_atras == 1270)                                                                  // 21
         {
            digitalWrite(valvu1, HIGH);
            digitalWrite(valvu3, HIGH);
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
           // Serial.println("1 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx1
         }
         if(contador_atras == 1210)                                                                  // 22
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
           // Serial.println("2 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx2
         }
         if(contador_atras == 1150)                                                                   //  23
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
           // Serial.println("3 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx3
         }
         if(contador_atras == 1090)                                                                   //24
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
           // Serial.println("4 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx4
         }
         if(contador_atras == 1030)                                                                   //25
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
           // Serial.println("5 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx5
         }
         if(contador_atras == 970)                                                                   //26
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
           // Serial.println("6 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx6
         }
         if(contador_atras == 910)                                                                   //27
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
           // Serial.println("7 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx7
         }
         if(contador_atras == 850)                                                                   //28  
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
           // Serial.println("8 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx8
         }
         if(contador_atras == 790)                                                                   //29
         {
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
           // Serial.println("9 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx9
         }
         if(contador_atras == 730)                                                                    //30
         {  
            digitalWrite(releprueba5, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba5, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
           /// Serial.println("10 fuga con 9.8 progrma 14"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx10
         }
         if(contador_atras == 670)
         {
            digitalWrite(valvu1, LOW);
            digitalWrite(valvu3, LOW);
           // Serial.println("cierre de valvu terminada prueba 9.8 "); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx----------------------------------------------
         }
         if(contador_atras == 660)                                                                      // 31
         {
            digitalWrite(valvu1, HIGH);
            digitalWrite(valvu4, HIGH);
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
           // Serial.println("1 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx1
         }
         if(contador_atras == 600)                                                                      // 32
         {
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
           // Serial.println("2 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx2
         }
         if(contador_atras == 540)                                                                       //33
         {
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
          //  Serial.println("3 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx3
         }
         if(contador_atras == 480)                                                                       //34
         {
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
           // Serial.println("4 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx4
         }
         if(contador_atras == 420)                                                                       //35
         {
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
          //  Serial.println("5 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx5
         }
         if(contador_atras == 360)                                                                      // 36
         {
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
           // Serial.println("6 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx6
         }
         if(contador_atras == 300)                                                                      // 37
         {
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
          //  Serial.println("7 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx7
         }
         if(contador_atras ==240)                                                                      // 38
         {
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
          //  Serial.println("8 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx8
         }
         if(contador_atras == 180)                                                                       // 39
         {
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
          //  Serial.println("9 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx9
         }
         if(contador_atras == 120)                                                                         //40
         {
            digitalWrite(releprueba6, HIGH);
            digitalWrite(releprueba7, HIGH);
            digitalWrite(releprueba8, HIGH);
            digitalWrite(releprueba2, HIGH);
            delay_eco(1000);
            digitalWrite(releprueba6, LOW);
            digitalWrite(releprueba7, LOW);
            digitalWrite(releprueba8, LOW);
            digitalWrite(releprueba2, LOW);
            delay_eco(1000);
          //  Serial.println("10 fuga con 21 progrma 15"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx10
         }
         if(contador_atras == 60)
         {
            digitalWrite(valvu1, LOW);
            digitalWrite(valvu4, LOW);
          //  Serial.println("cierre de valvu terminada prueba 21 "); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx
         }
         
      //Serial.println("prueba activa"); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx
      delay_eco(100);
      //funcion de cuentra atras en seg de la prueba
       tiempo=millis();
       if (tiempo-tiempo_guardado>=1000){ //produce un evento cada 1000 milisegundo (1 seg)
           tiempo_guardado=tiempo;
          if  (contador_atras > 0 ){
               contador_atras--;
                } else {
                 contador_atras=2081;//se selecciona el tiempo para contar hacia atra//DATO DE CAMBIO DE TIEMPO
                  } 
        //Serial.println(  contador_atras); //xxxxxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxxx
         
        display.setTextSize(4);
        display.setTextColor(WHITE);
        display.setCursor(5,2);
        display.println(contador_atras);
        display.display();
        
        display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(100,20);
        display.println("seg");
        display.display();
        delay_eco(20);
       if((contador_atras<=2080)&&(contador_atras>=1880))
       {
         display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(105,5);
        display.println("1");
        display.display();
        display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(100,12);
        display.println("prg");
        display.display();

       }
       if((contador_atras<=1879)&&(contador_atras>=1280))
       {
        display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(105,5);
        display.println(" ");
        display.display();
         display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(105,5);
        display.println("2");
        display.display();
        display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(100,12);
        display.println("prg");
        display.display();
        delay_eco(20);
       }
       
       if((contador_atras<=1269)&&(contador_atras>=670))
       {
        display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(105,5);
        display.println(" ");
        display.display();
         display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(105,5);
        display.println("3");
        display.display();
        display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(100,12);
        display.println("prg");
        display.display();
        delay_eco(20);
       }
        if((contador_atras<=669)&&(contador_atras>=1))
       {
        display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(105,5);
        display.println(" ");
        display.display();
         display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(105,5);
        display.println("4");
        display.display();
        display.setTextSize(1);
        display.setTextColor(WHITE);
        display.setCursor(100,12);
        display.println("prg");
        display.display();
        delay_eco(20);
       }
        display.clearDisplay(); 
       }
         
      
      
   }
  
  } 
  else{
    
    digitalWrite(sinaire, HIGH);//sonido de aviso de que no hay aire
    delay_eco(400);
   digitalWrite(sinaire, LOW); 
    delay_eco(400);
    // Serial.println("sin aire");//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
     
  }
  
  if((contador_atras==2081)&&(aire1==HIGH))//DATO DE CAMBIO DE TIEMPO
  {
    
    if((push1==HIGH)&&(push2==LOW)&&(push3==LOW)&&(contador_atras==2081)){//DATO DE CAMBIO DE TIEMPO
      digitalWrite(valvu1, HIGH);
      digitalWrite(valvu2, HIGH);
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.setCursor(0,2);  
      display.println("MANUAL 4.6 ml/min");
      display.display();
      delay_eco(900);
      display.clearDisplay();
      //  Serial.println("manu 1");//xxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxx
        
    }
    int val1=0;
    int val2=0;
    val1=digitalRead(valvu1);
    val2=digitalRead(valvu2);
    if((push1==LOW)&&(val1==HIGH)&&(val2==HIGH)){
      digitalWrite(valvu1, LOW);
      digitalWrite(valvu2, LOW);
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.setCursor(0,0);
      display.println("FUGASET byANGEL PAL");
      display.display();
      delay_eco(900);
      display.clearDisplay();
        
    }
  
    
      if((push1==LOW)&&(push2==HIGH)&&(push3==LOW)&&(contador_atras==2081)){//DATO DE CAMBIO DE TIEMPO
      digitalWrite(valvu1, HIGH);
      digitalWrite(valvu3, HIGH);
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.setCursor(0,2);  
      display.println("MANUAL 9.8 ml/min");
      display.display();
      delay_eco(900);
      display.clearDisplay();
    //  Serial.println("manu 2");//xxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxx
        
    }
   
    int val4=0;
   
    val4=digitalRead(valvu3);
    if((push2==LOW)&&(val1==HIGH)&&(val4==HIGH)){
      digitalWrite(valvu1, LOW);
      digitalWrite(valvu3, LOW);
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.setCursor(0,0);
      display.println("FUGASET byANGEL PAL");
      display.display();
      delay_eco(900);
      display.clearDisplay();
     // Serial.println("manu 2222222222");//xxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxx  
    }

    
    if((push1==LOW)&&(push2==LOW)&&(push3==HIGH)&&(contador_atras==2081)){//DATO DE CAMBIO DE TIEMPO
      digitalWrite(valvu1, HIGH);
      digitalWrite(valvu4, HIGH);
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.setCursor(0,2);  
      display.println("MANUAL 21 ml/min");
      display.display();
      delay_eco(900);
      display.clearDisplay();
         // Serial.println("manu 3");//xxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxx
        
    }
    
    int val6=0;
    
    val6=digitalRead(valvu4);
    if((push3==LOW)&&(val1==HIGH)&&(val6==HIGH)){
      digitalWrite(valvu1, LOW);
      digitalWrite(valvu4, LOW);
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.setCursor(0,0);
      display.println("FUGASET byANGEL PAL");
      display.display();
      delay_eco(900);
      display.clearDisplay();
        
    }

  
  }

 
  
   while(contador_atras==0) {//terminacion de prueba reset para hacer una nueva
   
        // Serial.println("teminada la prueba de fuga");//xxxxxxxxxquitarxxxxxxxxxxxxxxxxxxxxxxxxx
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(0,2);
        display.println("<<FINAL>>   PRUEBA ");
        display.display();
        delay_eco(1000);
        display.clearDisplay();
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(5,2);
        display.println(" ");
        display.display();
        delay_eco(1000);
        display.clearDisplay();
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(0,0);
        display.println("  RESET   para nueva ");
        display.display();
        delay_eco(1000);
        display.clearDisplay();
        display.clearDisplay();
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(5,2);
        display.println(" ");
        display.display();
        delay_eco(1000);
   }
   while( (contador_atras<2081) && ((push1==HIGH) || (push2==HIGH) || (push3==HIGH)))//DATO DE CAMBIO DE TIEMPO
   {
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(0,2);
        display.println("<<FINAL>>   PRUEBA ");
        display.display();
        delay_eco(1000);
        display.clearDisplay();
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(5,2);
        display.println(" ");
        display.display();
        delay_eco(1000);
        display.clearDisplay();
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(0,0);
        display.println("  RESET   para nueva ");
        display.display();
        delay_eco(1000);
        display.clearDisplay();
        display.clearDisplay();
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(5,2);
        display.println(" ");
        display.display();
        delay_eco(1000);
   }
}

Espero estar en lo cierto y que con esto se solucione el problema.

Si pero está mal, si no tiene otro puerto hardware al menos debe usar SoftwareSerial para simularlo y no generar conflicto entre señales.

Obviamente, visto desde ese lado es claro que va a ver cosas raras en consola.

Saludos

puff cuanta información espero poder digerirla poco a poco gracias Surbyte por el consejo me voy a estudiar detenidamente la información que me propones, IgnoranteAbsoluto no tengo palabras para agradecerte la información que me has prestado y mil gracias pero te has llevado y currazo hacer el código, no me gusta aprovecharme de nadie, pero veo que esta comunidad funciona muy bien gracias a todos voy a probar y comentare los resultados que tan amablemente me habéis aportado de nuevo mil gracias a todos sois unos maquinas valga la redundancia un saludo pronto os digo resultados un abrazo.

Tienes toda la razón. Se debería de usar algo como SoftwareSerial para recibir los datos del microfugometro. No descarto que sea precisamente ruido en el RX lo que le está generando "basura" y se le quite usando SoftwareSerial. Pero si fuera eso, me extraña que no le de problemas desde el principio, sino transcurrido un tiempo, cosa que es más achacable a que se le está llenando el buffer, como ya he explicado. Lo ideal sería sumar las dos soluciones y usar el SoftwareSerial en delay_eco().

Si, pero solo con SS se soluciona, lee SS y envía como ahora por Serial.

Igual aclaremos, para que el amigo @angpal no se sienta mal, que en muchos proyectos que hay en la red cometen el error de usar los pines Rx y Tx como si estuviesen disponibles sin tener en cuenta que ahí está conectada la interface USB (que aunque no se use, está) y para peor también utilizan la interface al mismo tiempo para comunicarse con la consola. :man_facepalming:t2:

Saludos

Ya te digo yo que sólo con SoftwareSerial no lo vas a tener solucionado. Sobre todo si las líneas de datos te llegan una tras otras en menos de un segundo cada una de ellas. Tal como lo tiene originalmente, poco a poca se va formando un cuello de botella que hace que se terminen por perder datos al llenarse el buffer. Mientras que con la corrección que he propuesto, es casi imposible que se llene el buffer. Digo casi, porque no sé lo que se puede demorar el presentar las cosas en la pantalla, pero no creo que sea nada de tiempo comparado con los delay() de un segundo.

Si quieres, has una prueba extrema, ya que después de todo el programa hace eco de lo que le llega al Serial. Toma el código original y comenta todo lo que haga referencia al display. Pon luego un delay(10000) al final del loop(), que detenga el programa 10 segundos en cada bucle (esa es la parte extrema). Con el monitor serie manda un misma línea de texto una y otra vez, para que veas que no sólo tarda en "contestarte", sino que llegará un momento en que se "coma" parte del texto.

Después haz la prueba de la pausa de 10 segundos usando delay_eco() y verás que además de responder sobre la marcha (cosa que tú y yo sabemos que es obvia), no se deja nada por el camino.

Yo, por lo pronto, voy a esperar a ver si @angpal prueba lo que he puesto y nos dice si mejora algo el problema.

Es que los delays van a "volar", eso creo que lo tiene claro, ya se lo explicó @Surbyte

Y si querés mi opinión, las cosas hay que arreglarlas, no emparcharlas.
Si está mal se hace de nuevo, es así, emparcharla es agregar problemas (como hace MS con Windows... :rofl: )

ok compis mañana hare unas pruebas que hoy no tenia ninguno para calibrar y os cuento impresiones, lo hare con el código que me facilito IgnoranteAbsoluto. gatul yo a mi corto entender creo que los tiros van a ir por los delays. un saludo mañana os comento. y gracias de nuevo por los tips que me aportáis gracias de corazón.

bueno compañeros ya esta solucionado con el código que IgnoranteAbsoluto hecho como 6 pruebas es decir como 400 muestras y no ha fallado ni una sola vez no se como agradeceros el aporte que me habéis dado de veras muchas gracias y Surbyte gracias por los tips de esos tutoriales he empezado y están muy interesantes y a ti gatul gracias por tu punto de vista y tus consejos taimados y saludo a todos y por favor ya quiero cerrar la consulta como lo hago no lo se muy bien y como pongo la solución espero vuestra respuesta.

Moderador:
La consulta se cierra sola a los 4 meses y se deja abierta por si alguien quiere preguntar algo relacionado solo con este tema.