Go Down

Topic: lectura serial relentiza arduino (Read 631 times) previous topic - next topic

knibal

Hola! tengo dos arduinos mega conectados por bluetooth.
He conseguido que funciones si uno solicita unos datos el otro se los envia y viceversa. El caso es que si en el codigo le digo al arduino que este chequeando el serial por si recibe una cadena este se vuelve mucho mas pesado de lo que me gustaria ya que uno de ellos tiene un lcd y funciones que van cambiando cada segundo.
En el codigo no tengo ningun delay ya que si lo pongo podria perder una cadena que envie desde el otro arduino o esta la recibe incompleta.
Me gustaria saber como solucionais estos problemas.
UN SALUDO

max_saeta

Saludos
Lo primero seria que publicaras tu codigo para poder ayudarte. Asi encima no podemos hacer nada.
Ahora si tienes un mega puedes usar Serial event para no estar monitoreando desde codigo.

knibal

Hola
Esta seria la parte del condigo que envia los datos.

Code: [Select]
if( Serial1.available() > 0)
    {
       
        letra = Serial1.read();
        Serial1.flush();
        cadena[in++]=letra;
        if (letra=='#')
        {
           Serial.println(cadena);
           Serial.println("");
           switch (cadena[1])
            {
              case('e'):// cadena solicita envio de cadena
              {
                Serial.print("envio solicitado");
                switch (cadena[2])
                {
                  case ('r'):
                  {
                    Serial.print("se ha solicitado el envio de relojes");
                    mandarelojes();
                  }break;
                  case('s'):
                  {
                    Serial.print("se ha solicitado el envio de sondas");
                    mandasondas();
                  }break;
                  default:
                  {
                    Serial.print("cadena erronea envio");
                  }break;
                }
               
               }break;
               default:
               {
                 Serial.print("cadena erronea general");
               }break;
            }
            limpia();
        }
    }


limpia lo que hace es borrar la cadena donde se reciben los datos. enviasondas y enviarelojes lo que hace es crear la cadena correspondiente y lanzarla por el serial1.

Voy a mirarme Serial.event
Gracias

Go Up